commit | b096a831e23dd0b4c0d9d5a07a23e9ac8303ac2a | [log] [tgz] |
---|---|---|
author | Chris Suter <csuter@fuchsia.infra.roller.google.com> | Fri Oct 11 16:06:20 2024 +0000 |
committer | Copybara-Service <copybara-worker@google.com> | Fri Oct 11 09:08:49 2024 -0700 |
tree | 5c1c8059ec8db89eb91425a904cb184b9cbe3bc2 | |
parent | bfa39c86c4a50bec12c333b5e38994b6fed49acb [diff] |
[roll] Roll fuchsia [fuchsia-async] Fix timer memory issue Prior to this CL, defunct timers wouldn't get removed from the heap until the original time expired which meant it was possible to end up with excessive memory use under certain usage patterns. This change now uses a heap where elements can be removed. There are also a number of other optimisations and changes: 1. Timers will now usually avoid heap allocations. A heap allocation might be required if the heap needs to grow in capacity, but that should not happen very often. A side-effect of this is that timers are no longer Unpin, and timers aren't registered until they're first polled. 2. Timer::reset now works no matter what state the timer is in. 3. Timer now implements FusedFuture. Note that an earlier version of this CL tried to use BTreeSet, but that caused significant code size increases. I made some of the callsites Box::pin where it appeared to be difficult to pin to the stack (which won't be a regression because prior to this CL all timers caused a heap allocation). Owners might want to revisit this to remove the boxing. Original-Bug: 370598401 Original-Bug: 371152025 Original-Bug: 371434567 Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1130312 Owners-Override: Adam Barth <abarth@google.com> Original-Revision: cf3e8d891968ab17dd6c8235c4e402ae12c224ab GitOrigin-RevId: 567cf7afd4361ac01e6d0d2cc605eb013814a35c Change-Id: Iaee25c6428810d2a3e7b54fce9cdb156b8b6f5b4
This repository contains Fuchsia's Global Integration manifest files.
All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.
Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance in one of the communication channels documented at get involved.
First install Jiri.
Next run:
$ jiri init $ jiri import minimal https://fuchsia.googlesource.com/integration $ jiri update
Third party projects should have their own subdirectory in ./third_party
.