1. 03 May, 2022 1 commit
    • Georgia Kouveli's avatar
      [builtins] Remove indirection for pointers to code and data blobs · 739bdd1c
      Georgia Kouveli authored
      Mark the labels to the code and data global, which removes the need
      for having separate pointers to these labels in the .data section.
      
      This means that `v8_Default_embedded_blob_code_` and
      `v8_Default_embedded_blob_data_` can now actually be read-only when
      RELRO is enabled.
      
      The actual contents of `v8_Default_embedded_blob_code_` remain
      potentially non-readable for platforms where code is marked as
      execute-only, but these changes do not attempt to read them.
      
      Bug: v8:12850
      
      Change-Id: Ic1bc8e68fe44a9ce45380c83b0be5fa94e7da267
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3616510
      Commit-Queue: Georgia Kouveli <georgia.kouveli@arm.com>
      Reviewed-by: 's avatarJakob Linke <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#80331}
      739bdd1c
  2. 20 Apr, 2022 1 commit
    • Benoît Lizé's avatar
      Reland "[builtins] Remap builtins on Linux" · 8d186bb4
      Benoît Lizé authored
      Reason for reland: Fixed Fuchsia build.
      
      Original change's description:
      > [builtins] Remap builtins on Linux
      >
      > This is a CL similar to
      > https://chromium-review.googlesource.com/c/v8/v8/+/3553006, but on Linux
      > rather than macOS. The goal is to allow builtins to use short builtin
      > calls without paying a memory cost, by remapping rather than copying
      > them.
      >
      > However, while macOS has a system call making this easier, on Linux we
      > don't have one on most kernels. There is the recently-introduced
      > mremap(MREMAP_DONTUNMMAP), which is available in 5.7, but only works on
      > anonymous mappings until 5.13, which is too recent for most Android
      > devices.
      >
      > Instead, we open() the file containing the builtins, and mmap() it at
      > the desired location.
      >
      > Change-Id: I4524f349948b8f48c4536cf392a1cd179662a6cc
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3570426
      > Reviewed-by: Igor Sheludko <ishell@chromium.org>
      > Reviewed-by: Jakob Linke <jgruber@chromium.org>
      > Commit-Queue: Benoit Lize <lizeb@chromium.org>
      > Cr-Commit-Position: refs/heads/main@{#80022}
      
      Change-Id: I0cc8cf510bd2cb8621130bea8406d79aa209948c
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3596164Reviewed-by: 's avatarJakob Linke <jgruber@chromium.org>
      Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Commit-Queue: Benoit Lize <lizeb@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#80049}
      8d186bb4
  3. 19 Apr, 2022 2 commits
    • Shu-yu Guo's avatar
      Revert "[builtins] Remap builtins on Linux" · a8b04431
      Shu-yu Guo authored
      This reverts commit b1dd8287.
      
      Reason for revert: Breaking fuschia build https://ci.chromium.org/ui/p/v8/builders/ci/V8%20Fuchsia%20-%20builder/13592/overview
      
      Original change's description:
      > [builtins] Remap builtins on Linux
      >
      > This is a CL similar to
      > https://chromium-review.googlesource.com/c/v8/v8/+/3553006, but on Linux
      > rather than macOS. The goal is to allow builtins to use short builtin
      > calls without paying a memory cost, by remapping rather than copying
      > them.
      >
      > However, while macOS has a system call making this easier, on Linux we
      > don't have one on most kernels. There is the recently-introduced
      > mremap(MREMAP_DONTUNMMAP), which is available in 5.7, but only works on
      > anonymous mappings until 5.13, which is too recent for most Android
      > devices.
      >
      > Instead, we open() the file containing the builtins, and mmap() it at
      > the desired location.
      >
      > Change-Id: I4524f349948b8f48c4536cf392a1cd179662a6cc
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3570426
      > Reviewed-by: Igor Sheludko <ishell@chromium.org>
      > Reviewed-by: Jakob Linke <jgruber@chromium.org>
      > Commit-Queue: Benoit Lize <lizeb@chromium.org>
      > Cr-Commit-Position: refs/heads/main@{#80022}
      
      Change-Id: I0093fe84216f8c8fd1a8691c53817e578d92fa40
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3594009
      Auto-Submit: Shu-yu Guo <syg@chromium.org>
      Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
      Commit-Queue: Shu-yu Guo <syg@chromium.org>
      Owners-Override: Shu-yu Guo <syg@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#80028}
      a8b04431
    • Benoît Lizé's avatar
      [builtins] Remap builtins on Linux · b1dd8287
      Benoît Lizé authored
      This is a CL similar to
      https://chromium-review.googlesource.com/c/v8/v8/+/3553006, but on Linux
      rather than macOS. The goal is to allow builtins to use short builtin
      calls without paying a memory cost, by remapping rather than copying
      them.
      
      However, while macOS has a system call making this easier, on Linux we
      don't have one on most kernels. There is the recently-introduced
      mremap(MREMAP_DONTUNMMAP), which is available in 5.7, but only works on
      anonymous mappings until 5.13, which is too recent for most Android
      devices.
      
      Instead, we open() the file containing the builtins, and mmap() it at
      the desired location.
      
      Change-Id: I4524f349948b8f48c4536cf392a1cd179662a6cc
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3570426Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Reviewed-by: 's avatarJakob Linke <jgruber@chromium.org>
      Commit-Queue: Benoit Lize <lizeb@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#80022}
      b1dd8287
  4. 04 Apr, 2022 2 commits
  5. 01 Apr, 2022 1 commit
    • Benoit Lize's avatar
      [builtins] Remap embedded builtins into the heap on ARM64 macOS · da1a2d12
      Benoit Lize authored
      For short builtin calls, the builtins are copied on the heap when they
      cannot be put close enough to be in range of relative calls. This costs
      memory, as the embedded builtins are part of the binary, and mapped from
      the binary, and as a consequence shared with all running processes.
      
      Rather than copying the memory, we can remap it at a different address,
      avoiding the memory cost. This CL does that, on ARM64 macOS only for
      now.
      
      This saves at least ~1.4MiB of memory per V8 process. See below the
      output of vmmap <PID>:
      
      [...]
      Memory Tag 255             7408308000-740833c000   [  208K   144K   144K     0K] r-x/rwx SM=ZER
      Memory Tag 255             740833c000-7408340000   [   16K     0K     0K     0K] ---/rwx SM=ZER
      Memory Tag 255             7408344000-7408348000   [   16K     0K     0K     0K] ---/rwx SM=ZER
      Memory Tag 255             7408348000-740837c000   [  208K   144K   144K     0K] r-x/rwx SM=ZER
      Memory Tag 255             740837c000-740fe80000   [123.0M     0K     0K     0K] ---/rwx SM=ZER
      mapped file                740fe80000-740ffe4000   [ 1424K  1328K     0K     0K] r-x/rwx SM=COW          ...pp/Contents/Frameworks/Chromium Framework.framework/Versions/102.0.4958.0/Chromium Framework
      Memory Tag 255             740ffe4000-7410000000   [  112K     0K     0K     0K] ---/rwx SM=ZER
      
      The "208K" regions are 256kiB code pages, minus the header and guard
      pages, meaning that they are code chunks. The mapped file are the
      remapped builtins, showing that they aren't copied, but remapped from
      the binary.
      
      Bug: chromium:1298417
      Change-Id: Ia30a43e671726d01450a7db0ecb7777b34763053
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3553006Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Commit-Queue: Benoit Lize <lizeb@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#79716}
      da1a2d12
  6. 28 Mar, 2022 1 commit
  7. 24 Mar, 2022 1 commit
    • Milad Fa's avatar
      PPC: Introduce Power10 prefixed instructions · d7966ecd
      Milad Fa authored
      P10 comes with prefixed instruction (2 x 4-byte instructions)
      which allow for using larger immediate values. `paddi` has
      been added in this CL which uses a 34-bit immediate.
      
      Prefixed instructions cannot cross 64-byte boundaries, i.e we cannot
      have the first 4-bytes on one side and the second 4-bytes emitted on
      the other side of the boundary. Therefore we need to align generated
      code to 64 bytes and emit a nop whenever the boundary is being crossed
      midway (check emit_prefix).
      
      Change-Id: I90e9953089214e15eeef0d70147ea5943fe05f45
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3528993Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarJunliang Yan <junyan@redhat.com>
      Commit-Queue: Milad Farazmand <mfarazma@redhat.com>
      Cr-Commit-Position: refs/heads/main@{#79612}
      d7966ecd
  8. 24 Feb, 2022 1 commit
    • Clemens Backes's avatar
      Fail earlier on FreePages · 205fb295
      Clemens Backes authored
      {FreePages} is never expected to fail, and each caller wraps the call in
      a CHECK macro. In order to learn more about failures, this CL moves the
      CHECK inside of {::FreePages}, to fail whenever the {PageAllocator}
      fails to free pages.
      
      As a next step, I'll audit our {PageAllocator} implementations to ensure
      that none of them return {false} for {FreePages}. Note that this is
      already the case for the gin platform (chromium).
      
      R=mlippautz@chromium.org
      
      Bug: v8:12656, chromium:1299735
      Change-Id: Ib61be6cc8da0110ead2db1ad005728bd061e0243
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3484321Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/main@{#79248}
      205fb295
  9. 18 Feb, 2022 1 commit
  10. 14 Jan, 2022 1 commit
  11. 12 Jan, 2022 1 commit
  12. 16 Dec, 2021 1 commit
  13. 02 Dec, 2021 1 commit
  14. 01 Sep, 2021 1 commit
  15. 25 Aug, 2021 2 commits
  16. 16 Aug, 2021 1 commit
  17. 12 Aug, 2021 1 commit
  18. 27 Jul, 2021 1 commit
  19. 12 Jul, 2021 1 commit
    • Peter Kasting's avatar
      Fix some instances of -Wunreachable-code-aggressive. · ca596361
      Peter Kasting authored
      These need some consideration.  Clang apparently considers V8_UNLIKELY
      to mean "always false", which seems questionable to me (possibly a
      bug?).  That said, removing it in the cases here doesn't seem likely to
      cause problems -- the logging instance seems fine, and the other used to
      not have the macro and gained it in a commit that seemed to have nothing
      to do with performance.
      
      The trampoline register change is safe, but perhaps V8 will support an
      architecture in the future which needs this conditional?
      
      I'd leave these as-is, but it also seems a shame not to enable
      -Wunreachable-code-aggressive just because of these...
      
      Bug: chromium:1066980
      Change-Id: Ib819298cecba082666c26fa7010009f8e9441bf8
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2994805
      Auto-Submit: Peter Kasting <pkasting@chromium.org>
      Commit-Queue: Hannes Payer <hpayer@chromium.org>
      Reviewed-by: 's avatarHannes Payer <hpayer@chromium.org>
      Reviewed-by: 's avatarToon Verwaest <verwaest@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#75681}
      ca596361
  20. 23 Jun, 2021 1 commit
  21. 22 Jun, 2021 1 commit
  22. 18 Jun, 2021 1 commit
  23. 17 Jun, 2021 1 commit
  24. 16 Jun, 2021 1 commit
    • John Xu's avatar
      Introduce Starboard snapshot writer · a52858dc
      John Xu authored
      Cobalt is a V8 embedder and it has its own platform abstraction. So
      to V8 the OS name is "Starboard" instead of Win/Linux/Android even
      though the real OS is one of them. To select the right embedded file
      writer for Cobalt, we need some customizations in
      platform-embedded-file-writer-base.*.
      
      Bug: v8:10927
      Change-Id: I6dadb4690ade0b4aebec14bc87fdc6d71c03b3bb
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2963804
      Auto-Submit: John Xu <johnx@google.com>
      Commit-Queue: John Xu <johnx@google.com>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#75170}
      a52858dc
  25. 14 Jun, 2021 1 commit
  26. 10 Jun, 2021 1 commit
  27. 07 Jun, 2021 1 commit
  28. 04 May, 2021 1 commit
  29. 28 Apr, 2021 1 commit
    • Jakob Gruber's avatar
      [snapshot] Fix the Memory.json benchmark · f5594f50
      Jakob Gruber authored
      .. which traces various stats (time, memory) related to the snapshot.
      Due to various flag shuffles, it was broken as of Oct 2020, with some
      line items reporting constant 0.
      
      This also refactors --profile-deserialization and
      --serialization-statistics s.t. the former only reports
      deserialization times and the latter reports memory. Memory.json now
      passes both flags.
      
      Change-Id: I7dacbbbe9f7a667e0802d0f7a44703dc34524a4e
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2854742
      Auto-Submit: Jakob Gruber <jgruber@chromium.org>
      Commit-Queue: Leszek Swirski <leszeks@chromium.org>
      Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#74241}
      f5594f50
  30. 16 Apr, 2021 3 commits
    • Leszek Swirski's avatar
      Reland "[codegen] Add static interface descriptors" · 2871e05c
      Leszek Swirski authored
      This is a reland of ae0752df
      
      Reland fixes:
      
        * Remove UNREACHABLE() from constexpr switch, since we don't have a
          CONSTEXPR_UNREACHABLE() (it's ok, the switch is exhaustive for the
          enum anyway).
        * Fix IsRegisterArray trait to use public inheritance and size_t for
          std::array size.
      
      Original change's description:
      > [codegen] Add static interface descriptors
      >
      > Add a new CRTP StaticCallInterfaceDescriptor class, which provides
      > static constexpr getters for a descriptor's registers, parameter counts,
      > and so on. Each CallInterfaceDescriptor subclass is changed to extend
      > StaticCallInterfaceDescriptor, with StaticCallInterfaceDescriptor itself
      > extending CallInterfaceDescriptor to still provide a dynamic lookup
      > where needed.
      >
      > StaticCallInterfaceDescriptor provides a couple of customisation points,
      > where it reads its CRTP derived descriptor's static fields and
      > functions, with default fallbacks where appropriate. With these
      > customisation points, the definition of CallInterfaceDescriptor
      > subclasses is simplified to:
      >
      >     a) Providing parameter names (as before)
      >     b) Providing parameter types (as before)
      >     c) Optionally setting flags (like kNoContext or kAllowVarArgs) as
      >        static booleans on the class.
      >     d) Optionally providing a `registers()` method that returns a
      >        std::array<Register, N> of registers that may be used for
      >        parameters (if not provided, this defaults to the implementation
      >        specific default register set).
      >
      > Parameter registers (and register count) are automagically set based on
      > the number of parameters and number of given registers, with extra magic
      > to ignore no_reg registers (to reduce ia32 special casing). The
      > CallInterfaceDescriptorData is initialized based on these static
      > functions, rather than manual per-descriptor initializers.
      >
      > This allows us to skip loading descriptors dynamically for CallBuiltin
      > in Sparkplug, and instead lets us use a bit of template magic to
      > statically set up arguments for the calls. Any other users of statically
      > known descriptors will also benefit, thanks to C++ picking the static
      > methods over the dynamic methods on the base class when available.
      >
      > Because we can remove various virtual functions and trigger heavier
      > inlining of constantly known values, binary size slightly decreases with
      > this change.
      >
      > Note that torque-generated descriptors are changed to use the same magic,
      > rather than having Torque-specific magic, for consistency.
      >
      > Bug: v8:11420
      > Change-Id: Icc5e238b6313a08734feb564204a13226b450c22
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2814518
      > Auto-Submit: Leszek Swirski <leszeks@chromium.org>
      > Reviewed-by: Nico Hartmann <nicohartmann@chromium.org>
      > Reviewed-by: Clemens Backes <clemensb@chromium.org>
      > Reviewed-by: Igor Sheludko <ishell@chromium.org>
      > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > Commit-Queue: Clemens Backes <clemensb@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#73996}
      
      TBR=nicohartmann@chromium.org,clemensb@chromium.org,ishell@chromium.org,clemensb@chromium.org
      
      Bug: v8:11420
      Change-Id: Icd1f6cdb3c178e74460044b1e9623139929ceba8
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831872Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Commit-Queue: Leszek Swirski <leszeks@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#74010}
      2871e05c
    • Leszek Swirski's avatar
      Revert "[codegen] Add static interface descriptors" · 5dea60d6
      Leszek Swirski authored
      This reverts commit ae0752df.
      
      Reason for revert: Predictably, constexpr issues on non-clang compilers.
      
      Original change's description:
      > [codegen] Add static interface descriptors
      >
      > Add a new CRTP StaticCallInterfaceDescriptor class, which provides
      > static constexpr getters for a descriptor's registers, parameter counts,
      > and so on. Each CallInterfaceDescriptor subclass is changed to extend
      > StaticCallInterfaceDescriptor, with StaticCallInterfaceDescriptor itself
      > extending CallInterfaceDescriptor to still provide a dynamic lookup
      > where needed.
      >
      > StaticCallInterfaceDescriptor provides a couple of customisation points,
      > where it reads its CRTP derived descriptor's static fields and
      > functions, with default fallbacks where appropriate. With these
      > customisation points, the definition of CallInterfaceDescriptor
      > subclasses is simplified to:
      >
      >     a) Providing parameter names (as before)
      >     b) Providing parameter types (as before)
      >     c) Optionally setting flags (like kNoContext or kAllowVarArgs) as
      >        static booleans on the class.
      >     d) Optionally providing a `registers()` method that returns a
      >        std::array<Register, N> of registers that may be used for
      >        parameters (if not provided, this defaults to the implementation
      >        specific default register set).
      >
      > Parameter registers (and register count) are automagically set based on
      > the number of parameters and number of given registers, with extra magic
      > to ignore no_reg registers (to reduce ia32 special casing). The
      > CallInterfaceDescriptorData is initialized based on these static
      > functions, rather than manual per-descriptor initializers.
      >
      > This allows us to skip loading descriptors dynamically for CallBuiltin
      > in Sparkplug, and instead lets us use a bit of template magic to
      > statically set up arguments for the calls. Any other users of statically
      > known descriptors will also benefit, thanks to C++ picking the static
      > methods over the dynamic methods on the base class when available.
      >
      > Because we can remove various virtual functions and trigger heavier
      > inlining of constantly known values, binary size slightly decreases with
      > this change.
      >
      > Note that torque-generated descriptors are changed to use the same magic,
      > rather than having Torque-specific magic, for consistency.
      >
      > Bug: v8:11420
      > Change-Id: Icc5e238b6313a08734feb564204a13226b450c22
      > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2814518
      > Auto-Submit: Leszek Swirski <leszeks@chromium.org>
      > Reviewed-by: Nico Hartmann <nicohartmann@chromium.org>
      > Reviewed-by: Clemens Backes <clemensb@chromium.org>
      > Reviewed-by: Igor Sheludko <ishell@chromium.org>
      > Reviewed-by: Jakob Gruber <jgruber@chromium.org>
      > Commit-Queue: Clemens Backes <clemensb@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#73996}
      
      Bug: v8:11420
      Change-Id: Ie5469c9253fc140590ac30b72db6eb1d93f86806
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2831485
      Auto-Submit: Leszek Swirski <leszeks@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@{#74000}
      5dea60d6
    • Leszek Swirski's avatar
      [codegen] Add static interface descriptors · ae0752df
      Leszek Swirski authored
      Add a new CRTP StaticCallInterfaceDescriptor class, which provides
      static constexpr getters for a descriptor's registers, parameter counts,
      and so on. Each CallInterfaceDescriptor subclass is changed to extend
      StaticCallInterfaceDescriptor, with StaticCallInterfaceDescriptor itself
      extending CallInterfaceDescriptor to still provide a dynamic lookup
      where needed.
      
      StaticCallInterfaceDescriptor provides a couple of customisation points,
      where it reads its CRTP derived descriptor's static fields and
      functions, with default fallbacks where appropriate. With these
      customisation points, the definition of CallInterfaceDescriptor
      subclasses is simplified to:
      
          a) Providing parameter names (as before)
          b) Providing parameter types (as before)
          c) Optionally setting flags (like kNoContext or kAllowVarArgs) as
             static booleans on the class.
          d) Optionally providing a `registers()` method that returns a
             std::array<Register, N> of registers that may be used for
             parameters (if not provided, this defaults to the implementation
             specific default register set).
      
      Parameter registers (and register count) are automagically set based on
      the number of parameters and number of given registers, with extra magic
      to ignore no_reg registers (to reduce ia32 special casing). The
      CallInterfaceDescriptorData is initialized based on these static
      functions, rather than manual per-descriptor initializers.
      
      This allows us to skip loading descriptors dynamically for CallBuiltin
      in Sparkplug, and instead lets us use a bit of template magic to
      statically set up arguments for the calls. Any other users of statically
      known descriptors will also benefit, thanks to C++ picking the static
      methods over the dynamic methods on the base class when available.
      
      Because we can remove various virtual functions and trigger heavier
      inlining of constantly known values, binary size slightly decreases with
      this change.
      
      Note that torque-generated descriptors are changed to use the same magic,
      rather than having Torque-specific magic, for consistency.
      
      Bug: v8:11420
      Change-Id: Icc5e238b6313a08734feb564204a13226b450c22
      Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2814518
      Auto-Submit: Leszek Swirski <leszeks@chromium.org>
      Reviewed-by: 's avatarNico Hartmann <nicohartmann@chromium.org>
      Reviewed-by: 's avatarClemens Backes <clemensb@chromium.org>
      Reviewed-by: 's avatarIgor Sheludko <ishell@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Commit-Queue: Clemens Backes <clemensb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#73996}
      ae0752df
  31. 12 Apr, 2021 1 commit
  32. 08 Apr, 2021 1 commit
  33. 24 Mar, 2021 1 commit
  34. 17 Mar, 2021 2 commits