X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=common%2Ftrace_model.hpp;h=4a9ca476f262580f6c32a83ce6ba882f41630935;hb=712cc1db47e56a1032dc72d4209ffc9054ec54e4;hp=7c4cdc78f221528e1b0fa7df7dd7b326b790c24c;hpb=aa1b2136cc72893e519ff73c47e2ecd29cafe1da;p=apitrace diff --git a/common/trace_model.hpp b/common/trace_model.hpp index 7c4cdc7..4a9ca47 100644 --- a/common/trace_model.hpp +++ b/common/trace_model.hpp @@ -41,6 +41,10 @@ namespace trace { +// Should match Call::no +typedef unsigned CallNo; + + typedef unsigned Id; @@ -49,7 +53,6 @@ struct FunctionSig { const char *name; unsigned num_args; const char **arg_names; - bool backtrace; }; @@ -349,30 +352,30 @@ public: void visit(Visitor &visitor); }; -class StackFrame { -public: - String* module; - String* function; - String* filename; - String* linenumber; - String* offset; - StackFrame() : - module(NULL), - function(NULL), - filename(NULL), - linenumber(NULL), - offset(NULL) - {} - ~StackFrame(); +struct RawStackFrame { + Id id; + const char * module; + const char * function; + const char * filename; + int linenumber; + long long offset; + RawStackFrame() : + module(0), + function(0), + filename(0), + linenumber(-1), + offset(-1) + { + } }; -class Backtrace { +class StackFrame : public RawStackFrame { public: - std::vector frames; - ~Backtrace(); - void addFrame(StackFrame* frame); + ~StackFrame(); }; +typedef std::vector Backtrace; + class Visitor { public: @@ -488,14 +491,14 @@ class Call public: unsigned thread_id; unsigned no; - FunctionSig *sig; + const FunctionSig *sig; std::vector args; Value *ret; CallFlags flags; Backtrace* backtrace; - Call(FunctionSig *_sig, const CallFlags &_flags, unsigned _thread_id) : + Call(const FunctionSig *_sig, const CallFlags &_flags, unsigned _thread_id) : thread_id(_thread_id), sig(_sig), args(_sig->num_args),