Error FDRTraceWriter::visit(FunctionRecord &R) { // Write out the data in "field" order, to be endian-aware. uint32_t TypeRecordFuncId = uint32_t{R.functionId() & ~uint32_t{0x0Fu << 28}}; TypeRecordFuncId <<= 3; TypeRecordFuncId |= static_cast<uint32_t>(R.recordType()); TypeRecordFuncId <<= 1; TypeRecordFuncId &= ~uint32_t{0x01}; OS.write(TypeRecordFuncId); OS.write(R.delta()); return Error::success(); }
Error TraceExpander::visit(FunctionRecord &R) { resetCurrentRecord(); if (!IgnoringRecords) { BaseTSC += R.delta(); CurrentRecord.Type = R.recordType(); CurrentRecord.FuncId = R.functionId(); CurrentRecord.TSC = BaseTSC; CurrentRecord.PId = PID; CurrentRecord.TId = TID; CurrentRecord.CPU = CPUId; BuildingRecord = true; } return Error::success(); }