1. 02 Dec, 2021 1 commit
  2. 04 Nov, 2021 1 commit
  3. 18 Oct, 2021 1 commit
  4. 14 Oct, 2021 1 commit
  5. 13 Oct, 2021 1 commit
    • Samuel Groß's avatar
      Reland "Implement a fake virtual memory cage mechanism" · 0aaec6ed
      Samuel Groß authored
      This is a reland of 1ea76c13
      
      Disabled the failing test on Fuchsia until its PageAllocator
      respects allocation hints.
      
      Original change's description:
      > Implement a fake virtual memory cage mechanism
      >
      > On operating systems where reserving virtual address space is expensive,
      > notably Windows pre 8.1, it is not possible to create a proper virtual
      > memory cage. In order to still be able to reference caged objects
      > through offsets from the cage base on these systems, this CL introduces
      > a fake cage mechanism. When the fake cage is used, most of the virtual
      > memory for the cage is not actually reserved. Instead, the cage's page
      > allocator simply relies on hints to the OS to obtain pages inside the
      > cage. This does, however, not provide the same security benefits as a
      > real cage as unrelated allocations might end up inside the cage.
      >
      > Bug: chromium:1218005
      > Change-Id: Ie5314be23966ed0042a017917b63595481b5e7e3
      > Cq-Include-Trybots: luci.v8.try:v8_linux64_heap_sandbox_dbg_ng,v8_linux_arm64_sim_heap_sandbox_dbg_ng
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3217200
      > Commit-Queue: Samuel Groß <saelo@chromium.org>
      > Reviewed-by: Igor Sheludko <ishell@chromium.org>
      > Reviewed-by: Toon Verwaest <verwaest@chromium.org>
      > Cr-Commit-Position: refs/heads/main@{#77367}
      
      Bug: chromium:1218005
      Change-Id: I2ed95d121db164679c38085115e8fa92690c057e
      Cq-Include-Trybots: luci.v8.try:v8_linux64_heap_sandbox_dbg_ng,v8_linux_arm64_sim_heap_sandbox_dbg_ng
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3220151Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Commit-Queue: Samuel Groß <saelo@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#77378}
      0aaec6ed
  6. 12 Oct, 2021 2 commits
    • Deepti Gandluri's avatar
      Revert "Implement a fake virtual memory cage mechanism" · 1a0b993d
      Deepti Gandluri authored
      This reverts commit 1ea76c13.
      
      Reason for revert: The unit test added fails on the Fuchsia bot https://ci.chromium.org/p/v8/builders/ci/V8%20Fuchsia/25976?
      
      Original change's description:
      > Implement a fake virtual memory cage mechanism
      >
      > On operating systems where reserving virtual address space is expensive,
      > notably Windows pre 8.1, it is not possible to create a proper virtual
      > memory cage. In order to still be able to reference caged objects
      > through offsets from the cage base on these systems, this CL introduces
      > a fake cage mechanism. When the fake cage is used, most of the virtual
      > memory for the cage is not actually reserved. Instead, the cage's page
      > allocator simply relies on hints to the OS to obtain pages inside the
      > cage. This does, however, not provide the same security benefits as a
      > real cage as unrelated allocations might end up inside the cage.
      >
      > Bug: chromium:1218005
      > Change-Id: Ie5314be23966ed0042a017917b63595481b5e7e3
      > Cq-Include-Trybots: luci.v8.try:v8_linux64_heap_sandbox_dbg_ng,v8_linux_arm64_sim_heap_sandbox_dbg_ng
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3217200
      > Commit-Queue: Samuel Groß <saelo@chromium.org>
      > Reviewed-by: Igor Sheludko <ishell@chromium.org>
      > Reviewed-by: Toon Verwaest <verwaest@chromium.org>
      > Cr-Commit-Position: refs/heads/main@{#77367}
      
      Bug: chromium:1218005
      Change-Id: I541bb9656ab2a6a080c2a30d372226fcc5c95391
      Cq-Include-Trybots: luci.v8.try:v8_linux64_heap_sandbox_dbg_ng,v8_linux_arm64_sim_heap_sandbox_dbg_ng
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3219086
      Auto-Submit: Deepti Gandluri <gdeepti@chromium.org>
      Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
      Commit-Queue: Deepti Gandluri <gdeepti@chromium.org>
      Owners-Override: Deepti Gandluri <gdeepti@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#77368}
      1a0b993d
    • Samuel Groß's avatar
      Implement a fake virtual memory cage mechanism · 1ea76c13
      Samuel Groß authored
      On operating systems where reserving virtual address space is expensive,
      notably Windows pre 8.1, it is not possible to create a proper virtual
      memory cage. In order to still be able to reference caged objects
      through offsets from the cage base on these systems, this CL introduces
      a fake cage mechanism. When the fake cage is used, most of the virtual
      memory for the cage is not actually reserved. Instead, the cage's page
      allocator simply relies on hints to the OS to obtain pages inside the
      cage. This does, however, not provide the same security benefits as a
      real cage as unrelated allocations might end up inside the cage.
      
      Bug: chromium:1218005
      Change-Id: Ie5314be23966ed0042a017917b63595481b5e7e3
      Cq-Include-Trybots: luci.v8.try:v8_linux64_heap_sandbox_dbg_ng,v8_linux_arm64_sim_heap_sandbox_dbg_ng
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3217200
      Commit-Queue: Samuel Groß <saelo@chromium.org>
      Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#77367}
      1ea76c13
  7. 17 Sep, 2021 1 commit
    • Clemens Backes's avatar
      [traphandler] Add arm64 simulator support on Windows · 367f86de
      Clemens Backes authored
      This ports the trap handler implementation for the arm64 simulator
      from POSIX to Windows. Apart from different registers being used
      for passing parameters, and different access to these register
      values in the signal handler, the implementation is exactly the same.
      
      The new logic is being used for sanitizer builds which automatically
      target arm64 via the simulator, or if manually compiling an arm64
      simulator build on x64. I manually tested the latter.
      
      Also, the existing unit test is enabled for Mac (which was missing)
      and Windows now.
      
      R=ahaas@chromium.org, mseaborn@chromium.org
      
      Bug: v8:11955
      Cq-Include-Trybots: luci.v8.try:v8_win64_asan_rel_ng
      Cq-Include-Trybots: luci.v8.try:v8_mac64_asan_rel_ng
      Change-Id: Ia62405b28808a3cc9f199e3f43a45ffc4bda491b
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3163256
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#76902}
      367f86de
  8. 08 Sep, 2021 1 commit
    • Clemens Backes's avatar
      [wasm] Add unit tests for code protection · c9704cf7
      Clemens Backes authored
      This adds some basic tests for WebAssembly code protection, in four
      different configurations:
      - no protection
      - mprotect-based protection
      - PKU-based protection
      - PKU with fallback to mprotect
      
      If PKU is not supported by the OS or hardware, then PKU is identical to
      no protection, and PKU with fallback is identical to mprotect. We always
      execute all four configurations anyway.
      If protection is effective, we expect code to be writable within a
      {CodeSpaceWriteScope}, and not writable otherwise. When trying to write
      to non-writable code, we expect a crash of the process (checked via
      {ASSERT_DEATH_IF_SUPPORTED}).
      
      R=jkummerow@chromium.org
      CC=​mpdenton@chromium.org
      
      Bug: v8:11974
      Cq-Include-Trybots: luci.v8.try:v8_mac_arm64_rel_ng
      Cq-Include-Trybots: luci.v8.try:v8_mac_arm64_dbg_ng
      Change-Id: I4ec0ce9426f70ff41a292b9ea25be1e8956a670e
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3138210
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#76726}
      c9704cf7
  9. 24 Aug, 2021 1 commit
  10. 19 Aug, 2021 2 commits
    • Ng Zhi An's avatar
      [gdbjit] Fix overlapping AddressRegion check · 5e8e2d04
      Ng Zhi An authored
      Whenever we are adding a new AddressRegion to the CodeMap, we first
      remove all overlapping regions. The logic to check for overlapping
      region is incomplete. For example, if all existing regions are less than
      the region to be added, we incorrectly remove all regions, effectively
      deleting all JITCodeEntry we have constructed.
      
      We extract this overlapping check into a helper function, so that we can
      unittest this without worrying about JITCodeEvent functionality, and also
      without dealing with V8 internals (like Isolate and SFI).
      
      The overlapping logic is rather hard to understand, has many special
      cases, it will probably be much easier to just loop through all the
      entries, rather than using lower_bound. Ideally, we can refactor this to
      use some sort of sweep-line algorithm. Hopefully the unittests catch the
      most obvious cases.
      
      Bug: v8:11908
      Change-Id: Id96975599ac59974185c3dbf64cdfceb17e98d18
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3105381
      Commit-Queue: Zhi An Ng <zhin@chromium.org>
      Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#76397}
      5e8e2d04
    • Michael Lippautz's avatar
      heap: Fix TSAN race when setting a flag after page initialization · 847f6d9a
      Michael Lippautz authored
      HAS_PROGRESS_BAR is set after page initialization at which point all
      flags are assumed to be immutable while a GC is running.
      
      Separating out the progress bar from flags allows setting it lazily at
      allocation time.
      
      Bug: v8:11915
      Change-Id: I48a877e0e80d583d7a0fadef2546fc70417806e7
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3085268
      Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
      Reviewed-by: 's avatarOmer Katz <omerkatz@chromium.org>
      Reviewed-by: 's avatarHannes Payer <hpayer@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#76382}
      847f6d9a
  11. 16 Aug, 2021 1 commit
  12. 11 Aug, 2021 1 commit
  13. 09 Aug, 2021 1 commit
    • Leszek Swirski's avatar
      [api] Add API for off-thread code cache deserialization · f888f48e
      Leszek Swirski authored
      To consume a code cache off-thread
      
        1. The embedder creates a CachedData object wrapping the data blob.
        2. The embedder calls ScriptCompiler::StartConsumingCodeCache with the
           CachedData, and receives a ScriptCompiler::CodeCacheConsumeTask
           which takes ownership of the CachedData.
        3. The embedder calls ScriptCompiler::CodeCacheConsumeTask::Run
           on a different thread.
        4. Once this completes, the embedded passes the completed task as an
           optional argument into Source constructor, and calls Compile as
           before.
      
      This is roughly similar to how streaming compilation works, with the
      QoL improvement that Source owns the CodeCacheConsumeTask and therefore
      we can reuse the same Compile method and do the off-thread finalization
      behind the scenes inside Compile.
      
      On the v8::internal side, ScriptCompiler::CodeCacheConsumeTask wraps a
      v8::internal::BackgroundDeserializeTask, which has a Run and a Finish
      method. The Run creates a LocalIsolate (again, similar to
      BackgroundCompileTask), calls some helpers on CodeSerializer, and stores
      the pre-finalization result in a OffThreadDeserializeData structure.
      This stores Persistent Handles to the off-thread initialized SFI and
      a vector of Scripts needing fixing up, and it owns the PersistentHandles
      object which owns those Handles. Finally, the Finish method consumes
      this OffThreadDeserializeData structure, fixes up Scripts, moves the
      SFI Handle into the caller HandleScope, and that's it.
      
      Since we don't yet have the source at off-thread deserialization time,
      the various code cache sanity checks are done without the source hash
      when deserializing, and the Finish method re-does them now that the
      source is available.
      
      Bug: chromium:1075999
      Change-Id: If1faf35ba3ef840fa4e735581d0b29c96c1d5fc8
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3067322
      Commit-Queue: Leszek Swirski <leszeks@chromium.org>
      Reviewed-by: 's avatarOmer Katz <omerkatz@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarCamillo Bruni <cbruni@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#76155}
      f888f48e
  14. 23 Jul, 2021 1 commit
  15. 20 Jul, 2021 2 commits
    • Clemens Backes's avatar
      Reland "[traphandler] Add simulator support" · 180a8ca8
      Clemens Backes authored
      This is a reland of 431fff66.
      The fix is in BUILD.gn: We need to also include chromeos, which is a
      linux target which is not covered by "is_linux" in gn.
      
      R=ahaas@chromium.org
      
      Original change's description:
      > [traphandler] Add simulator support
      >
      > This prepares the trap handler to support being used from simulators.
      > Modifications to the arm64 simulator will be done in a follow-up CL. For
      > now, the trap handler will be registered but not used in Wasm (we emit
      > explicit bounds checks instead, as before).
      >
      > The implementation uses inline assembly, so it is only available on x64
      > POSIX systems for now. This is the main platform we use for testing and
      > for fuzzing, so it should give us the test coverage we need. If needed,
      > inline assembly for other platforms can be added later.
      > The new code will be executed by the existing arm64 simulator bots, e.g.
      > "V8 Linux - arm64 - sim".
      >
      > R=ahaas@chromium.org, mseaborn@chromium.org
      >
      > Bug: v8:11955
      > Change-Id: Idc50291c704d9dea902ae0098e5309f19055816c
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3011160
      > Commit-Queue: Clemens Backes <clemensb@chromium.org>
      > Reviewed-by: Andreas Haas <ahaas@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#75780}
      
      Bug: v8:11955
      Change-Id: I8af39dea5b2cd3fa5418170a458832b3d6075107
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3040844
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Auto-Submit: Clemens Backes <clemensb@chromium.org>
      Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#75809}
      180a8ca8
    • Clemens Backes's avatar
      Revert "[traphandler] Add simulator support" · 08581343
      Clemens Backes authored
      This reverts commit 431fff66.
      
      Reason for revert: Causes link error in chrome: https://ci.chromium.org/ui/p/chromium/builders/ci/Linux%20ChromiumOS%20MSan%20Builder/24667/overview
      
      Original change's description:
      > [traphandler] Add simulator support
      >
      > This prepares the trap handler to support being used from simulators.
      > Modifications to the arm64 simulator will be done in a follow-up CL. For
      > now, the trap handler will be registered but not used in Wasm (we emit
      > explicit bounds checks instead, as before).
      >
      > The implementation uses inline assembly, so it is only available on x64
      > POSIX systems for now. This is the main platform we use for testing and
      > for fuzzing, so it should give us the test coverage we need. If needed,
      > inline assembly for other platforms can be added later.
      > The new code will be executed by the existing arm64 simulator bots, e.g.
      > "V8 Linux - arm64 - sim".
      >
      > R=​ahaas@chromium.org, mseaborn@chromium.org
      >
      > Bug: v8:11955
      > Change-Id: Idc50291c704d9dea902ae0098e5309f19055816c
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3011160
      > Commit-Queue: Clemens Backes <clemensb@chromium.org>
      > Reviewed-by: Andreas Haas <ahaas@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#75780}
      
      Bug: v8:11955
      Change-Id: I74d2e41864fc515bd9727898f12ec1498b97ee62
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3040839
      Auto-Submit: Clemens Backes <clemensb@chromium.org>
      Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
      Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
      Cr-Commit-Position: refs/heads/master@{#75798}
      08581343
  16. 19 Jul, 2021 1 commit
    • Clemens Backes's avatar
      [traphandler] Add simulator support · 431fff66
      Clemens Backes authored
      This prepares the trap handler to support being used from simulators.
      Modifications to the arm64 simulator will be done in a follow-up CL. For
      now, the trap handler will be registered but not used in Wasm (we emit
      explicit bounds checks instead, as before).
      
      The implementation uses inline assembly, so it is only available on x64
      POSIX systems for now. This is the main platform we use for testing and
      for fuzzing, so it should give us the test coverage we need. If needed,
      inline assembly for other platforms can be added later.
      The new code will be executed by the existing arm64 simulator bots, e.g.
      "V8 Linux - arm64 - sim".
      
      R=ahaas@chromium.org, mseaborn@chromium.org
      
      Bug: v8:11955
      Change-Id: Idc50291c704d9dea902ae0098e5309f19055816c
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3011160
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#75780}
      431fff66
  17. 18 Jun, 2021 1 commit
  18. 17 May, 2021 1 commit
  19. 14 May, 2021 1 commit
    • Vicky Kontoura's avatar
      [web snapshot] Support RegExp · add69092
      Vicky Kontoura authored
      This CL adds support for regular expressions. To serialize a regular
      expression, the pattern and flags are extracted and serialized as
      strings.
      
      Also, JSRegExp::StringFromFlags() is introduced to allow for
      transforming back from JSRegExp::Flags to the corresponding flag string.
      To verify that this implementation is on par with
      RegExp.prototype.flags, unittests are introduced under
      regexp/regexp-unittest.cc and RegExpBuiltinsAssembler::FlagsGetter()
      is updated to include a slow path that calls JSRegExp::StringFromFlags()
      through a runtime function.
      
      Bug: v8:11525, v8:11706
      Change-Id: I9cad4c464129ba1cbf64672130d8410730d7d679
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2878751
      Commit-Queue: Vicky Kontoura <vkont@google.com>
      Reviewed-by: 's avatarCamillo Bruni <cbruni@chromium.org>
      Reviewed-by: 's avatarMarja Hölttä <marja@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#74566}
      add69092
  20. 26 Apr, 2021 1 commit
  21. 14 Apr, 2021 2 commits
  22. 12 Apr, 2021 1 commit
  23. 07 Apr, 2021 1 commit
  24. 02 Apr, 2021 1 commit
  25. 12 Mar, 2021 1 commit
    • Andreas Haas's avatar
      [wasm][liftoff][arm64] Avoid x28 even without pointer compression · 8d0f5a04
      Andreas Haas authored
      Due to a recent change Liftoff used different register configurations
      in the pointer-compression and no-pointer-compression setups. This
      caused a mismatch between the registers used by Liftoff and the
      registers spilled by the WasmDebugBreak builtin.
      
      With this CL the same register configuration is used both with and
      without pointer compression. Even without x28 there are 24 registers
      that can be used. Moreover, 24 registers can be spilled without
      padding, which would be needed with 25 registers to preserve stack
      alignment.
      
      Drive-by change: Use Reglist in frame-constants on all platforms.
      
      R=jkummerow@chromium.org
      
      Bug: v8:7581
      Change-Id: Iae2892718e905a7995a3fdd7be7fd4d75bebb3dd
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2752884
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#73366}
      8d0f5a04
  26. 11 Mar, 2021 4 commits
    • Clemens Backes's avatar
      Reland "[no-wasm] Exclude src/wasm from compilation" · 3f9ff062
      Clemens Backes authored
      This is a reland of 80f5dfda. A condition
      in pipeline.cc was inverted, which lead to a CSA verifier error.
      
      Original change's description:
      > [no-wasm] Exclude src/wasm from compilation
      >
      > This is the biggest chunk, including
      > - all of src/wasm,
      > - torque file for wasm objects,
      > - torque file for wasm builtins,
      > - wasm builtins,
      > - wasm runtime functions,
      > - int64 lowering,
      > - simd scala lowering,
      > - WasmGraphBuilder (TF graph construction for wasm),
      > - wasm frame types,
      > - wasm interrupts,
      > - the JSWasmCall opcode,
      > - wasm backing store allocation.
      >
      > Those components are all recursively entangled, so I found no way to
      > split this change up further.
      >
      > Some includes that were recursively included by wasm headers needed to
      > be added explicitly now.
      >
      > backing-store-unittest.cc is renamed to wasm-backing-store-unittest.cc
      > because it only tests wasm backing stores. This file is excluded from
      > no-wasm builds then.
      >
      > R=jkummerow@chromium.org, jgruber@chromium.org, mlippautz@chromium.org, petermarshall@chromium.org
      >
      > Bug: v8:11238
      > Change-Id: I7558f2d12d2dd6c65128c4de7b79173668c80b2b
      > Cq-Include-Trybots: luci.v8.try:v8_linux64_no_wasm_compile_rel
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2742955
      > Commit-Queue: Clemens Backes <clemensb@chromium.org>
      > Reviewed-by: Peter Marshall <petermarshall@chromium.org>
      > Reviewed-by: Toon Verwaest <verwaest@chromium.org>
      > Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
      > Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
      > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#73344}
      
      TBR=jgruber@chromium.org
      
      Bug: v8:11238
      Change-Id: I20bd2847a59c68738b5a336cd42582b7b1499585
      Cq-Include-Trybots: luci.v8.try:v8_linux64_no_wasm_compile_rel
      Cq-Include-Trybots: luci.v8.try:v8_linux_verify_csa_rel_ng
      Cq-Include-Trybots: luci.v8.try:v8_linux64_verify_csa_rel_ng
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2752867Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#73348}
      3f9ff062
    • Clemens Backes's avatar
      Revert "[no-wasm] Exclude src/wasm from compilation" · 92bc3d38
      Clemens Backes authored
      This reverts commit 80f5dfda.
      
      Reason for revert: Fails CSA verification: https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Linux%20-%20verify%20csa/21766/overview
      
      Original change's description:
      > [no-wasm] Exclude src/wasm from compilation
      >
      > This is the biggest chunk, including
      > - all of src/wasm,
      > - torque file for wasm objects,
      > - torque file for wasm builtins,
      > - wasm builtins,
      > - wasm runtime functions,
      > - int64 lowering,
      > - simd scala lowering,
      > - WasmGraphBuilder (TF graph construction for wasm),
      > - wasm frame types,
      > - wasm interrupts,
      > - the JSWasmCall opcode,
      > - wasm backing store allocation.
      >
      > Those components are all recursively entangled, so I found no way to
      > split this change up further.
      >
      > Some includes that were recursively included by wasm headers needed to
      > be added explicitly now.
      >
      > backing-store-unittest.cc is renamed to wasm-backing-store-unittest.cc
      > because it only tests wasm backing stores. This file is excluded from
      > no-wasm builds then.
      >
      > R=​jkummerow@chromium.org, jgruber@chromium.org, mlippautz@chromium.org, petermarshall@chromium.org
      >
      > Bug: v8:11238
      > Change-Id: I7558f2d12d2dd6c65128c4de7b79173668c80b2b
      > Cq-Include-Trybots: luci.v8.try:v8_linux64_no_wasm_compile_rel
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2742955
      > Commit-Queue: Clemens Backes <clemensb@chromium.org>
      > Reviewed-by: Peter Marshall <petermarshall@chromium.org>
      > Reviewed-by: Toon Verwaest <verwaest@chromium.org>
      > Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
      > Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
      > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#73344}
      
      Bug: v8:11238
      Change-Id: I93672002c1faa36bb0bb5b4a9cc2032ee2ccd814
      Cq-Include-Trybots: luci.v8.try:v8_linux64_no_wasm_compile_rel
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2752866
      Auto-Submit: Clemens Backes <clemensb@chromium.org>
      Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
      Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
      Cr-Commit-Position: refs/heads/master@{#73346}
      92bc3d38
    • Clemens Backes's avatar
      [no-wasm] Exclude src/wasm from compilation · 80f5dfda
      Clemens Backes authored
      This is the biggest chunk, including
      - all of src/wasm,
      - torque file for wasm objects,
      - torque file for wasm builtins,
      - wasm builtins,
      - wasm runtime functions,
      - int64 lowering,
      - simd scala lowering,
      - WasmGraphBuilder (TF graph construction for wasm),
      - wasm frame types,
      - wasm interrupts,
      - the JSWasmCall opcode,
      - wasm backing store allocation.
      
      Those components are all recursively entangled, so I found no way to
      split this change up further.
      
      Some includes that were recursively included by wasm headers needed to
      be added explicitly now.
      
      backing-store-unittest.cc is renamed to wasm-backing-store-unittest.cc
      because it only tests wasm backing stores. This file is excluded from
      no-wasm builds then.
      
      R=jkummerow@chromium.org, jgruber@chromium.org, mlippautz@chromium.org, petermarshall@chromium.org
      
      Bug: v8:11238
      Change-Id: I7558f2d12d2dd6c65128c4de7b79173668c80b2b
      Cq-Include-Trybots: luci.v8.try:v8_linux64_no_wasm_compile_rel
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2742955
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Reviewed-by: 's avatarPeter Marshall <petermarshall@chromium.org>
      Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#73344}
      80f5dfda
    • Manos Koukoutos's avatar
      [turbofan] Fix CsaLoadElimination for small types · f7bb9267
      Manos Koukoutos authored
      CsaLoadElimination failed to account for truncation when optimizing
      loads. This CL extends the notion of compatible Loads and Stores to
      include ({store}, {load}) pairs which both have integral representation
      and {store}'s representation is no smaller than {load}'s. In case the
      representations are not identical, it truncates and possibly
      sign-extends {store} before forwarding it to {load}.
      
      Additional change: Extend ObjectMayAlias with wasm allocating builtin
      calls.
      
      Bug: v8:11504
      Change-Id: I43f89a13793b54477a33be18aaf346462aefa8e5
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2739975Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#73340}
      f7bb9267
  27. 08 Mar, 2021 1 commit
  28. 05 Mar, 2021 1 commit
    • Bill Budge's avatar
      Reland "Reland "Reland "[compiler][wasm] Align Frame slots to value size""" · e639eafe
      Bill Budge authored
      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
      
      The reverted fix for Wasm return slot allocation is added in
      patchset #2, to avoid fuzzer issues that it fixed:
      
      https://chromium-review.googlesource.com/c/v8/v8/+/2683024
      
      TBR=neis@chromium.org
      
      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: Ia5cf63af4e5991bc7cf42da9972ffd044fc829f0
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2733177
      Commit-Queue: Bill Budge <bbudge@chromium.org>
      Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#73238}
      e639eafe
  29. 26 Feb, 2021 1 commit
  30. 25 Feb, 2021 2 commits
  31. 23 Feb, 2021 2 commits
    • 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