Lines Matching defs:item
39 static const char *GetModuleName(const TraceDumper::TraceItem &item) {
40 if (!item.symbol_info)
42 return GetModuleName(item.symbol_info->sc);
130 void TraceItem(const TraceDumper::TraceItem &item) override {
131 if (item.symbol_info) {
132 if (!item.prev_symbol_info ||
133 !IsSameInstructionSymbolContext(*item.prev_symbol_info,
134 *item.symbol_info)) {
136 const char *module_name = GetModuleName(item);
139 else if (!item.symbol_info->sc.function && !item.symbol_info->sc.symbol)
142 item.symbol_info->sc.DumpStopContext(
143 &m_s, item.symbol_info->exe_ctx.GetTargetPtr(),
144 item.symbol_info->address,
153 if (item.error && !m_was_prev_instruction_an_error)
156 m_s.Format(" {0}: ", item.id);
159 m_s.Format("[{0}] ", item.timestamp
160 ? formatv("{0:3} ns", *item.timestamp).str()
164 if (item.event) {
165 m_s << "(event) " << TraceCursor::EventKindToString(*item.event);
166 switch (*item.event) {
169 item.cpu_id ? std::to_string(*item.cpu_id) : "unavailable");
172 m_s.Format(" [{0}]", item.hw_clock ? std::to_string(*item.hw_clock)
179 m_s.Format(" [{0}]", item.sync_point_metadata);
182 } else if (item.error) {
183 m_s << "(error) " << *item.error;
185 m_s.Format("{0:x+16}", item.load_address);
186 if (item.symbol_info && item.symbol_info->instruction) {
188 item.symbol_info->instruction->Dump(
192 &item.symbol_info->exe_ctx, &item.symbol_info->sc,
199 m_was_prev_instruction_an_error = (bool)item.error;
355 void DumpEvent(const TraceDumper::TraceItem &item) {
356 m_j.attribute("event", TraceCursor::EventKindToString(*item.event));
357 switch (*item.event) {
359 m_j.attribute("cpuId", item.cpu_id);
362 m_j.attribute("hwClock", item.hw_clock);
368 m_j.attribute("syncPointMetadata", item.sync_point_metadata);
373 void DumpInstruction(const TraceDumper::TraceItem &item) {
374 m_j.attribute("loadAddress", formatv("{0:x}", item.load_address));
375 if (item.symbol_info) {
376 m_j.attribute("module", ToOptionalString(GetModuleName(item)));
379 ToOptionalString(item.symbol_info->sc.GetFunctionName().AsCString()));
381 if (lldb::InstructionSP instruction = item.symbol_info->instruction) {
382 ExecutionContext exe_ctx = item.symbol_info->exe_ctx;
395 if (IsLineEntryValid(item.symbol_info->sc.line_entry)) {
399 item.symbol_info->sc.line_entry.GetFile().GetPath().c_str()));
400 m_j.attribute("line", item.symbol_info->sc.line_entry.line);
401 m_j.attribute("column", item.symbol_info->sc.line_entry.column);
406 void TraceItem(const TraceDumper::TraceItem &item) override {
408 m_j.attribute("id", item.id);
410 m_j.attribute("timestamp_ns", item.timestamp
412 std::to_string(*item.timestamp))
415 if (item.event) {
416 DumpEvent(item);
417 } else if (item.error) {
418 m_j.attribute("error", *item.error);
420 DumpInstruction(item);
462 TraceItem item = {};
463 item.id = m_cursor_sp->GetId();
466 item.timestamp = m_cursor_sp->GetWallClockTime();
467 return item;
549 TraceItem item = CreatRawTraceItem();
552 item.event = m_cursor_sp->GetEventType();
553 switch (*item.event) {
555 item.cpu_id = m_cursor_sp->GetCPU();
558 item.hw_clock = m_cursor_sp->GetHWClock();
564 item.sync_point_metadata = m_cursor_sp->GetSyncPointMetadata();
567 m_writer_up->TraceItem(item);
569 item.error = m_cursor_sp->GetError();
570 m_writer_up->TraceItem(item);
573 item.load_address = m_cursor_sp->GetLoadAddress();
577 CalculateSymbolInfo(exe_ctx, item.load_address, prev_symbol_info);
578 item.prev_symbol_info = prev_symbol_info;
579 item.symbol_info = symbol_info;
582 m_writer_up->TraceItem(item);