ui: Fix Wasm interop calls with pointers > 2GB

- We recently bumped the Wasm max memory from 2GB->4GB
  in aosp/3018909.
- That can cause some heap pointers to be >2GB.
- Sometimes heap pointers are passed to wasm_bridge.ts:onReply()
  when they are HeapBuffered buffers for RPC replies.
- By default the Wasm bindings map uint32 to JS numbers. If the
  uint32 is > 2GB the called function sees a negative argument
  on the JS side.
- The fix is to triple-shift (>>> 0) which converts the negative
  number into the corresponding uint32 positive one.
- That in turn would manifest as slicing the wrong address of
  the buffer when figuring out the boundaries of the RPC reply
  buffer on the JS side, breaking the RPC sequence.

Bug: 332083475
Change-Id: I61005a442ae2322e4db2499812828053bb936104
(cherry picked from commit 8cac0c1697db9594dbbc5c0ff720b47d5b1aa77f)
1 file changed
tree: 8bb69dab27ab990c2f62dc406700123b511f4d19
  1. .github/
  2. bazel/
  3. build_overrides/
  4. buildtools/
  5. debian/
  6. docs/
  7. examples/
  8. gn/
  9. include/
  10. infra/
  11. protos/
  12. python/
  13. src/
  14. test/
  15. third_party/
  16. tools/
  17. ui/
  18. .clang-format
  19. .clang-tidy
  20. .git-blame-ignore-revs
  21. .gitattributes
  22. .gitignore
  23. .gn
  24. .style.yapf
  25. Android.bp
  26. Android.bp.extras
  27. BUILD
  28. BUILD.extras
  29. BUILD.gn
  30. CHANGELOG
  31. codereview.settings
  32. DIR_METADATA
  33. heapprofd.rc
  34. LICENSE
  35. meson.build
  36. METADATA
  37. MODULE_LICENSE_APACHE2
  38. OWNERS
  39. perfetto.rc
  40. PerfettoIntegrationTests.xml
  41. persistent_cfg.pbtxt
  42. PRESUBMIT.py
  43. README.chromium
  44. README.md
  45. TEST_MAPPING
  46. traced_perf.rc
  47. WATCHLISTS
  48. WORKSPACE
README.md

Perfetto - System profiling, app tracing and trace analysis

Perfetto is a production-grade open-source stack for performance instrumentation and trace analysis. It offers services and libraries and for recording system-level and app-level traces, native + java heap profiling, a library for analyzing traces using SQL and a web-based UI to visualize and explore multi-GB traces.

See https://perfetto.dev/docs or the /docs/ directory for documentation.