Lines Matching refs:recordSample
351 void VirtualRuntime::DedupFromRecord(PerfRecordSample *recordSample) in DedupFromRecord() argument
353 u64 nr = recordSample->data_.nr; in DedupFromRecord()
355 collectSymbolCallBack_(recordSample); in DedupFromRecord()
359 u32 pid = recordSample->data_.pid; in DedupFromRecord()
360 u64 *ips = recordSample->data_.ips; in DedupFromRecord()
376 collectSymbolCallBack_(recordSample); in DedupFromRecord()
382 recordSample->stackId_.value = stackId.value; in DedupFromRecord()
383 recordSample->header.size -= (sizeof(u64) * nr - sizeof(stackId)); in DedupFromRecord()
384 recordSample->data_.nr = 0; in DedupFromRecord()
385 recordSample->data_.ips = nullptr; in DedupFromRecord()
386 recordSample->removeStack_ = true; in DedupFromRecord()
425 auto recordSample = static_cast<PerfRecordSample *>(&record); in UpdateFromRecord() local
426 UpdateFromRecord(*recordSample); in UpdateFromRecord()
464 void VirtualRuntime::SymbolicCallFrame(PerfRecordSample &recordSample, uint64_t ip, in SymbolicCallFrame() argument
467 pid_t pid = static_cast<pid_t>(recordSample.data_.pid); in SymbolicCallFrame()
468 pid_t tid = static_cast<pid_t>(recordSample.data_.tid); in SymbolicCallFrame()
473 MakeCallFrame(symbol, recordSample.callFrames_.emplace_back(ip, 0)); in SymbolicCallFrame()
474 HLOGV(" (%zu)unwind symbol: %*s%s", recordSample.callFrames_.size(), in SymbolicCallFrame()
475 static_cast<int>(recordSample.callFrames_.size()), "", in SymbolicCallFrame()
476 recordSample.callFrames_.back().ToSymbolString().c_str()); in SymbolicCallFrame()
479 bool VirtualRuntime::RecoverCallStack(PerfRecordSample &recordSample) in RecoverCallStack() argument
481 auto StackTable = processStackMap_.find(recordSample.data_.pid); in RecoverCallStack()
483 HLOGV("not found %" PRIu32 " pid", recordSample.data_.pid); in RecoverCallStack()
486 recordSample.ips_.clear(); in RecoverCallStack()
487 StackTable->second->GetIpsByStackId(recordSample.stackId_, recordSample.ips_); in RecoverCallStack()
488 recordSample.RecoverCallStack(); in RecoverCallStack()
492 void VirtualRuntime::SymbolicRecord(PerfRecordSample &recordSample) in SymbolicRecord() argument
498 recordSample.callFrames_.clear(); in SymbolicRecord()
501 if (recordSample.data_.nr == 0) { in SymbolicRecord()
502 server_pid = recordSample.GetServerPidof(0); in SymbolicRecord()
503 SymbolicCallFrame(recordSample, recordSample.data_.ip, server_pid, PERF_CONTEXT_MAX); in SymbolicRecord()
505 for (u64 i = 0; i < recordSample.data_.nr; i++) { in SymbolicRecord()
506 uint64_t ip = recordSample.data_.ips[i]; in SymbolicRecord()
515 server_pid = recordSample.GetServerPidof(i); in SymbolicRecord()
516 SymbolicCallFrame(recordSample, ip, server_pid, context); in SymbolicRecord()
556 void VirtualRuntime::UnwindFromRecord(PerfRecordSample &recordSample) in UnwindFromRecord() argument
562 HLOGV("unwind record (time:%llu)", recordSample.data_.time); in UnwindFromRecord()
564 if (recordSample.data_.stack_size > 0) { in UnwindFromRecord()
565 pid_t server_pid = recordSample.GetUstackServerPid(); in UnwindFromRecord()
566 pid_t pid = static_cast<pid_t>(recordSample.data_.pid); in UnwindFromRecord()
567 pid_t tid = static_cast<pid_t>(recordSample.data_.tid); in UnwindFromRecord()
572 callstack_.UnwindCallStack(thread, recordSample.data_.user_abi == PERF_SAMPLE_REGS_ABI_32, in UnwindFromRecord()
573 recordSample.data_.user_regs, recordSample.data_.reg_nr, in UnwindFromRecord()
574 recordSample.data_.stack_data, recordSample.data_.dyn_size, in UnwindFromRecord()
575 recordSample.callFrames_); in UnwindFromRecord()
579 size_t oldSize = recordSample.callFrames_.size(); in UnwindFromRecord()
580 HLOGV("unwind %zu", recordSample.callFrames_.size()); in UnwindFromRecord()
581 callstack_.ExpandCallStack(thread.tid_, recordSample.callFrames_, callstackMergeLevel_); in UnwindFromRecord()
582 HLOGV("expand %zu (+%zu)", recordSample.callFrames_.size(), in UnwindFromRecord()
583 recordSample.callFrames_.size() - oldSize); in UnwindFromRecord()
585 recordSample.ReplaceWithCallStack(oldSize); in UnwindFromRecord()
592 NeedDropKernelCallChain(recordSample); in UnwindFromRecord()
595 DedupFromRecord(&recordSample); in UnwindFromRecord()
601 if (dedupStack_ && recordSample.stackId_.section.id > 0 && recordSample.data_.nr == 0) { in UnwindFromRecord()
602 RecoverCallStack(recordSample); in UnwindFromRecord()
605 SymbolicRecord(recordSample); in UnwindFromRecord()
614 void VirtualRuntime::UpdateFromRecord(PerfRecordSample &recordSample) in UpdateFromRecord() argument
616 UpdateThread(recordSample.data_.pid, recordSample.data_.tid); in UpdateFromRecord()
617 if (recordSample.data_.server_nr) { in UpdateFromRecord()
619 for (size_t i = 0; i < recordSample.data_.server_nr; i++) { in UpdateFromRecord()
620 pid_t pid = static_cast<pid_t>(recordSample.data_.server_pids[i]); in UpdateFromRecord()
628 UnwindFromRecord(recordSample); in UpdateFromRecord()