}
}
-unsigned Writer::beginEnter(const FunctionSig *sig) {
+unsigned Writer::beginEnter(const FunctionSig *sig, unsigned thread_id) {
_writeByte(trace::EVENT_ENTER);
+ _writeUInt(thread_id);
_writeUInt(sig->id);
if (!lookup(functions, sig->id)) {
_writeString(sig->name);
}
}
+void Writer::beginRepr(void) {
+ _writeByte(trace::TYPE_REPR);
+}
+
void Writer::writeBool(bool value) {
_writeByte(value ? trace::TYPE_TRUE : trace::TYPE_FALSE);
}
}
}
-void Writer::writeEnum(const EnumSig *sig) {
+void Writer::writeEnum(const EnumSig *sig, signed long long value) {
_writeByte(trace::TYPE_ENUM);
_writeUInt(sig->id);
if (!lookup(enums, sig->id)) {
- _writeString(sig->name);
- Writer::writeSInt(sig->value);
+ _writeUInt(sig->num_values);
+ for (unsigned i = 0; i < sig->num_values; ++i) {
+ _writeString(sig->values[i].name);
+ writeSInt(sig->values[i].value);
+ }
enums[sig->id] = true;
}
+ writeSInt(value);
}
void Writer::writeBitmask(const BitmaskSig *sig, unsigned long long value) {
_writeByte(trace::TYPE_NULL);
}
-void Writer::writeOpaque(const void *addr) {
+void Writer::writePointer(unsigned long long addr) {
if (!addr) {
Writer::writeNull();
return;
}
_writeByte(trace::TYPE_OPAQUE);
- _writeUInt((size_t)addr);
+ _writeUInt(addr);
}