Bytecode optimizations for coroutine tracing
- Use ArrayDeque instead of ArrayList for trace sections
- Use String instead of TraceSection object, which included an id.
We verify the correctness of the trace section in our unit tests.
Additional runtime checks are uncessary since they add overhead,
and in the worst-case scenario, a malformed trace only affect debug
tooling.
- Access TraceData through the CoroutineContext instead of the global
ThreadLocal when possible.
- New test to verify trace storage is null after performing many
multi-threaded operations that are traced.
Flag: ACONFIG com.android.systemui.coroutine_tracing DISABLED
Bug: 289353932
Test: atest tracinglib-host-test tracinglib-robolectric-test
Change-Id: Ib34bb265a54a23e37d7e5a1369aa329656b47633
8 files changed