TracedValue: add support for static and dynamic keys.

Add separate paths for static and dynamic dictionary keys to ensure that
dictionary key interning can be implemented later without any changes
to the clients.

StaticKey has an implicit constructor for string literals, which means
that the string literals can be passed to TracedDictionary::Add
directly.

All other values will need to be wrapped either in StaticKey (for const
char* pointers which are compile-time constant) or in DynamicKey (const
char* pointers which are generated at runtime or std::strings).

R=skyostil@google.com

Change-Id: I300c1d3c6aded63878586a365c8fd10d8d78e24c
4 files changed
tree: b9bc131495c100dbd2c95d37e9247f06f119dfe7
  1. .github/
  2. bazel/
  3. build_overrides/
  4. buildtools/
  5. debian/
  6. docs/
  7. examples/
  8. gn/
  9. include/
  10. infra/
  11. protos/
  12. src/
  13. test/
  14. tools/
  15. ui/
  16. .clang-format
  17. .clang-tidy
  18. .gitattributes
  19. .gitignore
  20. .gn
  21. .style.yapf
  22. Android.bp
  23. Android.bp.extras
  24. BUILD
  25. BUILD.extras
  26. BUILD.gn
  27. CHANGELOG
  28. codereview.settings
  29. DIR_METADATA
  30. heapprofd.rc
  31. LICENSE
  32. METADATA
  33. MODULE_LICENSE_APACHE2
  34. OWNERS
  35. perfetto.rc
  36. PerfettoIntegrationTests.xml
  37. PRESUBMIT.py
  38. README.chromium
  39. README.md
  40. TEST_MAPPING
  41. traced_perf.rc
  42. 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.