[fuchsia-async] Some memory saving optimisations

Prior to this change, tasks were held in Arc and then a Box.  This CL
removes one of them so that we just have a Box.  The Arc reference count
is now integrated into AtomicFuture's state, so that also saves the
strong and weak reference counts that Arc has.

There are some other memory savings: `Scope::all_tasks` is now a
`HashSet` rather than a `HashMap`.

Unfortunately, this did involve the use some more unsafe code, but
AtomicFuture already had a fair bit of that.

This might show some performance improvements due to improved CPU cache
behaviour.

Change-Id: I5b4de0a40511a77d30ef00e500e84651b4748fa8
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1224064
Fuchsia-Auto-Submit: Chris Suter <csuter@google.com>
Commit-Queue: Auto-Submit <auto-submit@fuchsia-infra.iam.gserviceaccount.com>
Reviewed-by: Adam Perry <adamperry@google.com>
Reviewed-by: Jacob Rutherford <jruthe@google.com>
7 files changed
tree: 0f16bf6fe68991808ac7eabb9dcdbbbcb21f3086
  1. .helix/
  2. boards/
  3. build/
  4. bundles/
  5. docs/
  6. examples/
  7. infra/
  8. products/
  9. scripts/
  10. sdk/
  11. src/
  12. third_party/
  13. tools/
  14. zircon/
  15. .clang-format
  16. .clang-tidy
  17. .editorconfig
  18. .git-blame-ignore-revs
  19. .gitattributes
  20. .gitignore
  21. .gitmodules
  22. .gn
  23. .ignore
  24. analysis_options.yaml
  25. AUTHORS
  26. BUILD.gn
  27. CODE_OF_CONDUCT.md
  28. CONTRIBUTING.md
  29. fuchsia.code-workspace
  30. LICENSE
  31. OWNERS
  32. PATENTS
  33. pyproject.toml
  34. pyrightconfig.json
  35. README.md
  36. rustfmt.toml
  37. shac.star
  38. shac.textproto
README.md

Fuchsia

What is Fuchsia?

Fuchsia is an open source, general purpose operating system supporting modern 64-bit Intel and ARM processors.

We expect everyone interacting with our project to respect our code of conduct.

Read more about Fuchsia's principles.

How can I build and run Fuchsia?

See Getting Started.

Where can I learn more about Fuchsia?

See fuchsia.dev.