1. 01 Mar, 2021 1 commit
  2. 26 Feb, 2021 6 commits
  3. 25 Feb, 2021 3 commits
  4. 24 Feb, 2021 3 commits
  5. 23 Feb, 2021 5 commits
    • Seth Brenith's avatar
      [torque] Add LazyNode support · ede27407
      Seth Brenith authored
      This change adds a new abstract type Lazy<T> which can be used to
      interoperate with CSA code that uses LazyNode. This new type has special
      code-generation rules because its generated type is not TNode<...> but
      std::function<TNode<...>()>. Torque code can do nothing with this type
      except pass it around, but passing it to the CSA function RunLazy is an
      easy way to execute the std::function and get back a normal value.
      Torque code can also create Lazy<T> values using the intrinsic function
      %MakeLazy, which takes the name of a macro as its first parameter,
      followed by arguments to that macro which will be passed when the
      LazyNode is evaluated. We use the macro's name because the language
      doesn't support taking references to macros, and implementing such a
      feature would be complicated.
      
      Bug: v8:7793
      Change-Id: I09120960e3492dd51be0d4c57e14ff3826b99262
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2701752
      Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
      Reviewed-by: 's avatarNico Hartmann <nicohartmann@chromium.org>
      Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#72964}
      ede27407
    • Michael Achenbach's avatar
      [test] Skip flaky tests · 2a8514b6
      Michael Achenbach authored
      No-Try: true
      Bug: v8:11338, v8:11413
      Change-Id: I5a3365e557bc3727071d8d73e9b3f9da1ae6d011
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2714704
      Auto-Submit: Michael Achenbach <machenbach@chromium.org>
      Commit-Queue: Simon Zünd <szuend@chromium.org>
      Reviewed-by: 's avatarSimon Zünd <szuend@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#72953}
      2a8514b6
    • Clemens Backes's avatar
      [backend] Fix source position annotations · 5c237388
      Clemens Backes authored
      If two call instructions were generated right after each other, the
      source position table could get populated with two entries for the same
      PC (triggered by the follow-up CL: https://crrev.com/c/2697359).
      This CL fixes that by slightly changing the carry-over of source
      positions from nodes to instructions.
      
      The call node which has a source position attached generates two
      instructions:
            18: gap () ([rax|R|tp] = v16(-); [rbx|R|t] = v17(-);)
                [rax|R|t] = ArchCallWasmFunction [immediate:4] #-1 [rax|R|tp] [rbx|R|t] [immediate:5]
            19: gap () ()
                ArchJmp [immediate:6]
      
      Those are then reversed, and the source position is attached to the first
      one (the ArchJmp). After reversing it again later, the source position
      will be set to the pc *after* the call instruction, which in the example
      happened to be just another call instruction which already had a source
      position, resulting in this code:
      
      [...]
      0x388ee467d426    66  e875feffff     call 0x388ee467d2a0     ;; wasm stub: WasmThrow
      0x388ee467d42b    6b  e850feffff     call 0x388ee467d280     ;; wasm stub: WasmStackGuard
      [...]
      Source positions:
       pc offset  position
              6b         5
              6b         0
      
      By attaching the source position to the *last* instruction (after
      reversing), we ensure that it will be generated for an instruction
      *before* the call, or the call itself if this is the first instruction
      emitted for that node.
      
      R=jgruber@chromium.org
      
      Bug: v8:11490, v8:11496
      Change-Id: Ie95c87d0d9daea56ca14a811abcd02ac07a4cf84
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2697358
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#72951}
      5c237388
    • Clemens Backes's avatar
      [no-wasm] Exclude asm->wasm translation code · ca89bf25
      Clemens Backes authored
      The v8_enable_webassembly=false configuration will not be a able to run
      any wasm code, hence remove the whole asm to wasm translation from the
      binary.
      
      In order to skip specific unit tests in that configuration, we move the
      definition of the v8_enable_webassembly gn argument from BUILD.gn to
      v8.gni, such that it is available in all gn files.
      
      R=ecmziegler@chromium.org, machenbach@chromium.org
      
      Bug: v8:11238
      Change-Id: Id4e290df3e42ffd2f05c377bdd3a368871815daf
      Cq-Include-Trybots: luci.v8.try:v8_linux64_no_wasm_compile_rel
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2712562
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
      Reviewed-by: 's avatarEmanuel Ziegler <ecmziegler@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#72945}
      ca89bf25
    • Bill Budge's avatar
      Revert "Reland "Reland "Reland "[compiler][wasm] Align Frame slots to value size"""" · 942af6c7
      Bill Budge authored
      This reverts commit 9da4e363.
      
      Reason for revert: Fuzzers revealed that Liftoff doesn't use the CallDescriptor when pushing arguments, breaking linkage.
      
      tbr=ahaas@chromium.org,neis@chromium.org,jgruber@chromium.org
      
      Original change's description:
      > Reland "Reland "Reland "[compiler][wasm] Align Frame slots to value size"""
      >
      > This is a reland of 352b9ecb
      >
      > The test/fix CL has been merged in, as the fixes to return slot
      > accounting are needed to fix Arm64 issues turned up by the fuzzers:
      >
      > https://chromium-review.googlesource.com/c/v8/v8/+/2644139
      >
      > Original change's description:
      > > Reland "Reland "[compiler][wasm] Align Frame slots to value size""
      > >
      > > This is a reland of 1694925c
      > >
      > > Minor fix to linkage for constexpr.
      > >
      > > TBR=ahaas@chromium.org,neis@chromium.org
      > >
      > > Original change's description:
      > > > Reland "[compiler][wasm] Align Frame slots to value size"
      > > >
      > > > This is a reland of cddaf66c
      > > >
      > > > Original change's description:
      > > > > [compiler][wasm] Align Frame slots to value size
      > > > >
      > > > > - Adds an AlignedSlotAllocator class and tests, to unify slot
      > > > >   allocation. This attempts to use alignment holes for smaller
      > > > >   values.
      > > > > - Reworks Frame to use the new allocator for stack slots.
      > > > > - Reworks LinkageAllocator to use the new allocator for stack
      > > > >   slots and for ARMv7 FP register aliasing.
      > > > > - Fixes the RegisterAllocator to align spill slots.
      > > > > - Fixes InstructionSelector to align spill slots.
      > > > >
      > > > > Bug: v8:9198
      > > > >
      > > > > Change-Id: Ida148db428be89ef95de748ec5fc0e7b0358f523
      > > > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2512840
      > > > > Commit-Queue: Bill Budge <bbudge@chromium.org>
      > > > > Reviewed-by: Georg Neis <neis@chromium.org>
      > > > > Reviewed-by: Andreas Haas <ahaas@chromium.org>
      > > > > Cr-Commit-Position: refs/heads/master@{#71644}
      > > >
      > > > Bug: v8:9198
      > > > Change-Id: Ib91fa6746370c38496706341e12d05c7bf999389
      > > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2633390
      > > > Commit-Queue: Bill Budge <bbudge@chromium.org>
      > > > Reviewed-by: Andreas Haas <ahaas@chromium.org>
      > > > Reviewed-by: Georg Neis <neis@chromium.org>
      > > > Cr-Commit-Position: refs/heads/master@{#72195}
      > >
      > > Bug: v8:9198
      > > Change-Id: I91e02b823af8ec925dacf075388fb22e3eeb3384
      > > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2640890
      > > Reviewed-by: Bill Budge <bbudge@chromium.org>
      > > Commit-Queue: Bill Budge <bbudge@chromium.org>
      > > Cr-Commit-Position: refs/heads/master@{#72209}
      >
      > Bug: v8:9198
      > Change-Id: I8258f87463f66417c7028b9a1fed4b9b6d82a3be
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2669892
      > Reviewed-by: Georg Neis <neis@chromium.org>
      > Reviewed-by: Andreas Haas <ahaas@chromium.org>
      > Commit-Queue: Bill Budge <bbudge@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#72506}
      
      Bug: v8:9198
      Change-Id: I7f344e4d018ce3c02333b0b08efeecdd8cddf082
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2713207Reviewed-by: 's avatarBill Budge <bbudge@chromium.org>
      Reviewed-by: 's avatarZhi An Ng <zhin@chromium.org>
      Reviewed-by: 's avatarAdam Klein <adamk@chromium.org>
      Commit-Queue: Bill Budge <bbudge@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#72937}
      942af6c7
  6. 22 Feb, 2021 6 commits
    • Bill Budge's avatar
      Revert "[compiler][wasm] Fix Wasm linkage" · 9a540436
      Bill Budge authored
      This reverts commit 0818d138.
      
      Reason for revert: Rolling back to previous greedy slot allocator.
      
      tbr=ahaas@chromium.org
      
      Original change's description:
      > [compiler][wasm] Fix Wasm linkage
      >
      > - Fixes a problem when constructing Wasm CallDescriptors, where the
      >   allocation tries to treat parameters and returns as if they are in the
      >   same frame. This doesn't work when slots may be aligned in their
      >   frame. Instead, allocate parameters and returns separately and offset
      >   return slots by the number of parameter slots.
      > - Adds argument slot padding in the CallDescriptor lowering case, to
      >   prepare for when 32 bit targets align stack frames and require
      >   padding.
      > - Adds a regression test.
      >
      > Bug: chromium:1174500
      > Change-Id: I60d96a94b171a0d27ff61cbab35623976b0c6da8
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2683024
      > Commit-Queue: Bill Budge <bbudge@chromium.org>
      > Reviewed-by: Andreas Haas <ahaas@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#72588}
      
      Bug: chromium:1174500
      Change-Id: I1d1c389acde43bd56e6d2a27e1a3eb8ea4d6073c
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2713206
      Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
      Reviewed-by: 's avatarBill Budge <bbudge@chromium.org>
      Commit-Queue: Bill Budge <bbudge@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#72934}
      9a540436
    • Bill Budge's avatar
      Revert "[codegen][frames] Generalize argument padding slot code" · 396c2635
      Bill Budge authored
      This reverts commit 8cf4eec7.
      
      Reason for revert: Rolling back to previous greedy slot allocator.
      
      tbr=neis@chromium.org,jgruber@chromium.org
      
      Original change's description:
      > [codegen][frames] Generalize argument padding slot code
      >
      > - Removes kPadArguments boolean.
      > - Changes ShouldPadArguments to ArgumentPaddingSlots to reflect
      >   that on some architectures more than 1 padding slot may be needed.
      > - Adds AddArgumentPaddingSlots and ShouldPadArguments convenience
      >   functions.
      >
      > Bug: v8:9198
      >
      > Change-Id: Iba87518e071a75fb951b490d3f75a87ca715cc23
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2679109
      > Commit-Queue: Bill Budge <bbudge@chromium.org>
      > Reviewed-by: Georg Neis <neis@chromium.org>
      > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#72605}
      
      Bug: v8:9198
      Change-Id: Ie93d32d4b93c67840e4792acb017f28a826bd030
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2713205
      Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
      Reviewed-by: 's avatarBill Budge <bbudge@chromium.org>
      Commit-Queue: Bill Budge <bbudge@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#72931}
      396c2635
    • Dan Elphick's avatar
      [build] Improve build dependencies for gn check · 3a997519
      Dan Elphick authored
      Currently if gn check is enabled (with v8/third_party ignored), there
      are many errors due to headers being used without adding the proper
      dependency in BUILD.gn (or because it's being used transitively without
      a public_deps chain).
      
      This makes the number of errors go from 2114 to 195.
      
      Apart from adding dependencies, it also moves _v8_internal_Node_Print
      from objects-printer.cc to node.cc so it can see the Node::Print method
      which wouldn't otherwise be possible without a circular dependency. Also
      removes the previously deleted compiler/graph-builder-tester.h file.
      
      Bug: v8:7330
      Change-Id: Icb34585fbef621588265cf4267cfc88ecbcf0a72
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2702331Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Commit-Queue: Dan Elphick <delphick@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#72908}
      3a997519
    • Clemens Backes's avatar
      [no-wasm] Make --expose-wasm flag readonly · 96bfcfb8
      Clemens Backes authored
      If webassembly is disabled via a gn arg, we will not be able to enable
      it via command-line switch. Hence make this flag read-only in that
      configuration.
      
      R=ecmziegler@chromium.org
      
      Bug: v8:11238
      Change-Id: Ib93a55f74d4f018477f110b8b52aa9b645e86553
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2710426Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarEmanuel Ziegler <ecmziegler@chromium.org>
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#72905}
      96bfcfb8
    • Clemens Backes's avatar
      [no-wasm] Skip wasm tests if wasm is disabled · 18136654
      Clemens Backes authored
      This CL introduces a test runner flag to detect if webassembly has been
      disabled. Since all tests that require wasm are alrady skipped in
      lite mode, we introduce a has_webassembly flag for the test runner which
      checks for v8_enable_webassembly=true and v8_enable_lite_mode=false.
      As a drive-by, we also do not set the V8_ENABLE_WEBASSEMBLY
      preprocessor flag if lite mode is enabled.
      
      The status files are updated by splitting wasm tests from the
      "lite_mode" section and checking for "not has_webassembly" instead.
      
      Note that the v8_enable_webassembly=false configuration is not tested
      on any bot currently, but I will make sure that all tests keep passing
      on further changes in this configuration.
      
      R=machenbach@chromium.org
      
      Bug: v8:11238
      Cq-Include-Trybots: luci.v8.try:v8_linux64_no_wasm_compile_rel
      Change-Id: I1841eb1f1633cb47e0c079f4a4a4d769ca3a9cbb
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2710425Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#72898}
      18136654
    • Clemens Backes's avatar
      [wasm] Move ValueKind out of ValueType · a3776a63
      Clemens Backes authored
      Backends do not care about the concrete type, they only need to know the
      "kind" (e.g. "ref" or "i32").
      In order to prepare Liftoff to use the value kind instead of the
      value type for all stored data, this CL moves the kind out of the
      ValueType and makes it a top-level enum.
      
      R=manoskouk@chromium.org
      
      Bug: v8:11477
      Change-Id: I489d6c5207e6ff1b66e2afbe78a156d66df27eb3
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2707169
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Reviewed-by: 's avatarManos Koukoutos <manoskouk@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#72896}
      a3776a63
  7. 18 Feb, 2021 1 commit
  8. 17 Feb, 2021 3 commits
    • Omer Katz's avatar
      cppgc: Implement process-global state accessors. · c174643b
      Omer Katz authored
      Process global accessors for total physical size and used size are
      needed for blink. These are implemented via an allocation observer that
      atomically updates static counters.
      
      The public api only provides getters for the counters. An internal class
      is in charge of updating the counters as needed. A similar split is also
      applied to IsAnyIncrementalOrConcurrentMarking().
      
      Drive-by: ProcessHeap is merged into cppgc::internal::WriteBarrier.
      
      Bug: chromium:1056170
      Change-Id: Iaedebd1ac9d49238ce6bdd52ffa5d1ef4d28203d
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2695394
      Commit-Queue: Omer Katz <omerkatz@chromium.org>
      Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#72832}
      c174643b
    • Seth Brenith's avatar
      Reland "[interpreter] Short Star bytecode" · 7be64db4
      Seth Brenith authored
      This is a reland of cf93071c
      
      Original change's description:
      > [interpreter] Short Star bytecode
      >
      > Design doc:
      > https://docs.google.com/document/d/1g_NExMT78II_KnIYNa9MvyPYIj23qAiFUEsyemY5KRk/edit
      >
      > This change adds 16 new interpreter opcodes, kStar0 through kStar15, so
      > that we can use a single byte to represent the common operation of
      > storing to a low-numbered register. This generally reduces the quantity
      > of bytecode generated on web sites by 8-9%.
      >
      > In order to not degrade speed, a couple of other changes are required:
      >
      > The existing lookahead logic to check for Star after certain other
      > bytecode handlers is updated to check for these new short Star codes
      > instead. Furthermore, that lookahead logic is updated to contain its own
      > copy of the dispatch jump rather than merging control flow with the
      > lookahead-failed case, to improve branch prediction.
      >
      > A bunch of constants use bytecode size in bytes as a proxy for the size
      > or complexity of a function, and are adjusted downward proportionally to
      > the decrease in generated bytecode size.
      >
      > Other small drive-by fix: update generate-bytecode-expectations to emit
      > \n instead of \r\n on Windows.
      >
      > Change-Id: I6307c2b0f5794a3a1088bb0fb94f6e1615441ed5
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2641180
      > Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
      > Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
      > Cr-Commit-Position: refs/heads/master@{#72773}
      
      Change-Id: I1afb670c25694498b3989de615858f984a8c7f6f
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2698057
      Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarMythri Alle <mythria@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#72821}
      7be64db4
    • Thibaud Michaud's avatar
      [wasm][eh] Update catch_all encoding · 5d618f1f
      Thibaud Michaud authored
      'catch_all' and 'else' use distinct opcodes now.
      
      R=clemensb@chromium.org
      
      Bug: v8:8091
      Change-Id: If07e46b9ea23068953db1765d10c7e3746d21d99
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2699258
      Commit-Queue: Thibaud Michaud <thibaudm@chromium.org>
      Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#72810}
      5d618f1f
  9. 16 Feb, 2021 5 commits
  10. 15 Feb, 2021 2 commits
  11. 12 Feb, 2021 3 commits
  12. 11 Feb, 2021 2 commits