This is to reduce the size of the trace further and has appreciable results.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
Change in memory use is appreciable.
thread #1: tid = 40371 Raw trace size: 4 KiB Total number of instructions: 145011 Total approximate memory usage: 1840.96 KiB Average memory usage per instruction: 13.00 bytes Number of TSC decoding errors: 0
Tests still need to be updated.
only mostly cosmetic changes needed. Thanks for this. I'm glad that we are bringing the usage down
| lldb/source/Plugins/Trace/intel-pt/DecodedThread.cpp | ||
|---|---|---|
| 46–47 | ||
| 54–58 | let's give better names to these variables | |
| 62 | we can stop using next_load_address because we now have access to the entire trace | |
| 176 | you also need to include m_instruction_timestamps, probably m_instruction_timestamps.size() * (sizeof(size_t) + sizeof(uint64_t)) | |
| lldb/source/Plugins/Trace/intel-pt/DecodedThread.h | ||
| 127 | lowercase tsc because it's a variable | |
| 129–136 | I regret having created this method because it forces us to have a certain interface for the storage of the instructions. Let's just delete this method and create one new method size_t GetInstructionsCount() const; which should be able to replace all the external calls to this method | |
| 139 | ||
| 143–154 | Now that DecodedThread knows everything, we can simplify this method a bit. First, we can remove the parameter next_load_address, because it can easily be gotten by checking the instruction at index insn_index + 1 | |
| 193–199 | +1 | |
| 218 | ||
| 220 | ||
| lldb/source/Plugins/Trace/intel-pt/TraceCursorIntelPT.cpp | ||
| 23–30 | ||
just remove a small comment and good to go!
| lldb/source/Plugins/Trace/intel-pt/DecodedThread.h | ||
|---|---|---|
| 143–146 | remove this | |
lowercase tsc because it's a variable