static unsigned call_no = 0;
-unsigned BeginEnter(const char *function) {
+static std::map<Id, bool> functions;
+static std::map<Id, bool> bitmasks;
+
+
+unsigned BeginEnter(const FunctionSig &function) {
OS::AcquireMutex();
Open();
WriteByte(Trace::EVENT_ENTER);
- WriteName(function);
+ WriteUInt(function.id);
+ if (!functions[function.id]) {
+ WriteString(function.name);
+ WriteUInt(function.num_args);
+ for (unsigned i = 0; i < function.num_args; ++i) {
+ WriteString(function.args[i]);
+ }
+ functions[function.id] = true;
+ }
return call_no++;
}
OS::ReleaseMutex();
}
-void BeginArg(unsigned index, const char *name) {
+void BeginArg(unsigned index) {
WriteByte(Trace::CALL_ARG);
WriteUInt(index);
- WriteName(name);
}
void BeginReturn(void) {
LiteralSInt(value);
}
-static std::map<Id, bool> bitmasks;
-
void LiteralBitmask(const BitmaskSig &bitmask, unsigned long long value) {
WriteByte(Trace::TYPE_BITMASK);
WriteUInt(bitmask.id);