citrun

watch C/C++ source code execute
Log | Files | Refs | LICENSE

commit 9c086eae61b831d4dd8c07f32fe6c40e5106f05b
parent 072a8412fac148fb89a7c83676abcb32f88ae482
Author: kyle <kyle@0x30.net>
Date:   Sun, 18 Sep 2016 08:16:10 -0600

src: show execution count differences

Diffstat:
Msrc/process_file.cc | 21+++++++++------------
Msrc/process_file.h | 5+++--
Msrc/term_main.cc | 4+++-
3 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/src/process_file.cc b/src/process_file.cc @@ -47,6 +47,8 @@ ProcessFile::ProcessFile(std::string const &path) : m_shm.read_string(t.abs_file_path); t.exec_counts = (uint64_t *)m_shm.get_block(t.num_lines * 8); + t.exec_counts_last = new uint64_t[t.num_lines](); + t.source.resize(t.num_lines); m_program_loc += t.num_lines; read_source(t); @@ -80,18 +82,6 @@ ProcessFile::read_source(struct TranslationUnit &t) std::getline(file_stream, l); } -uint64_t -ProcessFile::total_execs() -{ - uint64_t count = 0; - - for (auto &t : m_tus) - for (unsigned int i = 0; i < t.num_lines; ++i) - count += t.exec_counts[i]; - - return count; -} - const TranslationUnit * ProcessFile::find_tu(std::string const &srcname) const { @@ -102,6 +92,13 @@ ProcessFile::find_tu(std::string const &srcname) const } void +ProcessFile::save_executions() +{ + for (auto &t : m_tus) + memcpy(t.exec_counts_last, t.exec_counts, t.num_lines * 8); +} + +void ProcessFile::read_executions() { } diff --git a/src/process_file.h b/src/process_file.h @@ -9,6 +9,7 @@ struct TranslationUnit { uint32_t num_lines; uint8_t has_execs; uint64_t *exec_counts; + uint64_t *exec_counts_last; std::vector<std::string> source; }; @@ -21,9 +22,9 @@ public: ProcessFile(std::string const &); const TranslationUnit *find_tu(std::string const &) const; - uint64_t total_execs(); bool is_alive() const; - void read_executions(); + void read_executions(); + void save_executions(); uint8_t m_major; uint8_t m_minor; diff --git a/src/term_main.cc b/src/term_main.cc @@ -118,7 +118,8 @@ CursesViewer::draw() int upper_bound = m_size_y - 2 + m_offset; for (int i = m_offset; i < upper_bound && i < m_cur_tu.num_lines; i++) { - uint32_t e = m_cur_tu.exec_counts[i]; + uint64_t e = m_cur_tu.exec_counts[i] - m_cur_tu.exec_counts_last[i]; + std::string l = m_cur_tu.source[i]; m_total_executions += e; @@ -144,6 +145,7 @@ CursesViewer::draw() attroff(COLOR_PAIR(color)); } + m_cur_pfile->save_executions(); print_statusbar(); refresh(); }