profiler/lua_stacks_map.cpp (34 lines of code) (raw):

#include "lua_stacks_map.h" #include <map> void lua_stack_map::insert_lua_stack_map(const struct lua_stack_event *e) { if (!e) { return; } auto it = map.find(e->user_stack_id); if (it == map.end()) { lua_stack_backtrace stack = {*e}; map[e->user_stack_id] = stack; // insert return; } lua_stack_backtrace *stack = &it->second; stack->push_back(*e); return; } // return the level of stack in the map int lua_stack_map::get_lua_stack_backtrace(int user_stack_id, lua_stack_backtrace *stack) { if (!stack) { return -1; } auto it = map.find(user_stack_id); if (it == map.end()) { *stack = lua_stack_backtrace{}; return -1; } *stack = it->second; return stack->size(); }