Revert "platform: Improve modification performance of HeapObserverList"

This reverts commit e5eb677d594ad07d109441556592bfd62b9fd3f0.

Reason for revert:
LUCI Bisection has identified this change as the cause of a test failure. See the analysis: https://ci.chromium.org/ui/p/chromium/bisection/test-analysis/b/6252732630433792

Sample build with failed test: https://ci.chromium.org/b/8710567560535674017
Affected test(s):
[ninja://chrome/test:browser_tests/MessagingApiTest.LargeMessages](https://ci.chromium.org/ui/test/chromium/ninja:%2F%2Fchrome%2Ftest:browser_tests%2FMessagingApiTest.LargeMessages?q=VHash%3Addee393e1fa4b060)

If this is a false positive, please report it at http://b.corp.google.com/createIssue?component=1199205&description=Analysis%3A+https%3A%2F%2Fci.chromium.org%2Fui%2Fp%2Fchromium%2Fbisection%2Ftest-analysis%2Fb%2F6252732630433792&format=PLAIN&priority=P3&title=Wrongly+blamed+https%3A%2F%2Fchromium-review.googlesource.com%2Fc%2Fchromium%2Fsrc%2F%2B%2F6479957&type=BUG

Original change's description:
> platform: Improve modification performance of HeapObserverList
>
> Since https://crrev.com/15370ec03c1a44797aa2287807e3acdd78b70f0d the
> list of observers is managed with a dense vector instead of a hash set
> to allow fast iteration. This is useful as the set is iterated on e.g.
> DOM modifications in rendering hot paths.
>
> This CL adds back the hashmap with a mapping from observer to index in
> the vector to allow for amortized constant time add and remove.
> Especially remove could otherwise suffer from O(N) handling with e.g.
> lots of (>10^6) queued setTimeout() calls.
>
> Bug: 411573537
> Change-Id: Iafd5c4a2f3021fd7617324fbcaa03a85438950d4
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6479957
> Reviewed-by: Omer Katz <omerkatz@chromium.org>
> Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#1480870}
>

Bug: 411573537
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Change-Id: I498805768e86eea5654a3b2e9bb61e94737d8b68
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6696744
Commit-Queue: Mahmoud Rashad <mmrashad@google.com>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Mahmoud Rashad <mmrashad@google.com>
Cr-Commit-Position: refs/heads/main@{#1481053}
1 file changed
tree: 2032fd82c516f7d8df5a9f13c977cd0c8ac20be3
  1. .github/
  2. android_webview/
  3. apps/
  4. ash/
  5. base/
  6. build/
  7. build_overrides/
  8. buildtools/
  9. cc/
  10. chrome/
  11. chromecast/
  12. chromeos/
  13. codelabs/
  14. components/
  15. content/
  16. crypto/
  17. dbus/
  18. device/
  19. docs/
  20. extensions/
  21. fuchsia_web/
  22. gin/
  23. google_apis/
  24. gpu/
  25. headless/
  26. infra/
  27. ios/
  28. ipc/
  29. media/
  30. mojo/
  31. net/
  32. pdf/
  33. ppapi/
  34. printing/
  35. remoting/
  36. rlz/
  37. sandbox/
  38. services/
  39. skia/
  40. sql/
  41. storage/
  42. styleguide/
  43. testing/
  44. third_party/
  45. tools/
  46. ui/
  47. url/
  48. webkit/
  49. .clang-format
  50. .clang-tidy
  51. .clangd
  52. .cursorignore
  53. .git-blame-ignore-revs
  54. .gitallowed
  55. .gitattributes
  56. .gitignore
  57. .gitmodules
  58. .gn
  59. .mailmap
  60. .rustfmt.toml
  61. .vpython3
  62. .yapfignore
  63. ATL_OWNERS
  64. AUTHORS
  65. BUILD.gn
  66. CODE_OF_CONDUCT.md
  67. codereview.settings
  68. CPPLINT.cfg
  69. CRYPTO_OWNERS
  70. DEPS
  71. DIR_METADATA
  72. LICENSE
  73. LICENSE.chromium_os
  74. OWNERS
  75. PRESUBMIT.py
  76. PRESUBMIT_test.py
  77. PRESUBMIT_test_mocks.py
  78. README.md
  79. SECURITY_OWNERS
  80. WATCHLISTS
README.md

Logo Chromium

Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.

The project's web site is https://www.chromium.org.

To check out the source code locally, don't use git clone! Instead, follow the instructions on how to get the code.

Documentation in the source is rooted in docs/README.md.

Learn how to Get Around the Chromium Source Code Directory Structure.

For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.

If you found a bug, please file it at https://crbug.com/new.