Lines Matching defs:callFrame

112 void VirtualRuntime::MakeCallFrame(DfxSymbol &symbol, CallFrame &callFrame)
114 callFrame.vaddrInFile_ = symbol.funcVaddr_;
115 callFrame.symbolName_ = symbol.symbolName_;
116 callFrame.symbolIndex_ = symbol.index_;
117 callFrame.filePath_ = symbol.module_.empty() ? symbol.comm_ : symbol.module_;
118 callFrame.symbolOffset_ = symbol.offset_;
119 callFrame.callFrameId_ = symbol.symbolId_;
120 callFrame.symbolNameId_ = symbol.symbolNameId_;
121 callFrame.filePathId_ = symbol.filePathId_;
123 callFrame.offset_ = symbol.funcVaddr_;
125 callFrame.offset_ = callFrame.ip_;
140 auto &callFrame = callFrameIt.operator*();
141 if (onlyjs && !callFrame.isJsFrame_) {
145 if (callFrame.ip_ >= PERF_CONTEXT_MAX) {
147 HLOGV("%s", UpdatePerfContext(callFrame.ip_, perfCallchainContext).c_str());
150 auto symbol = GetSymbol(callFrame, pid, tid,
153 MakeCallFrame(symbol, callFrame);
157 if (failedIPs_.find(callFrame.ip_) == failedIPs_.end()) {
164 failedIPs_.insert(callFrame.ip_);
184 HLOGV(" (%u)unwind symbol: %*s%s", index, index, "", callFrame.ToSymbolString().c_str());
448 const DfxSymbol VirtualRuntime::GetSymbol(CallFrame& callFrame, pid_t pid, pid_t tid,
451 HLOGM("try find tid %u ip 0x%" PRIx64 " in %zu symbolsFiles ", tid, callFrame.ip_, symbolsFiles_.size());
453 if (hookConfig_.fp_unwind() && callFrame.isJsFrame_) {
454 if (ArktsGetSymbolCache(callFrame, symbol)) {
457 symbol.filePathId_ = FillArkTsFilePath(callFrame.filePath_);
458 symbol.module_ = callFrame.filePath_;
459 symbol.symbolName_ = callFrame.symbolName_;
462 FillSymbolNameId(callFrame, symbol);
463 FillFileSet(callFrame, symbol);
465 callFrame.needReport_ |= CALL_FRAME_REPORT;
466 userSymbolCache_[std::pair(callFrame.ip_, symbol.filePathId_)] = symbol;
469 } else if (GetSymbolCache(callFrame.ip_, symbol, GetThread(pid, tid))) {
474 symbol = GetUserSymbol(callFrame.ip_, GetThread(pid, tid));
476 HLOGM("GetUserSymbol valid tid = %d ip = 0x%" PRIx64 "", tid, callFrame.ip_);
479 FillSymbolNameId(callFrame, symbol);
480 FillFileSet(callFrame, symbol);
482 callFrame.needReport_ |= CALL_FRAME_REPORT;
483 userSymbolCache_[std::pair(callFrame.ip_, symbol.filePathId_)] = symbol;
528 void VirtualRuntime::FillSymbolNameId(CallFrame& callFrame, DfxSymbol& symbol)
536 callFrame.needReport_ |= SYMBOL_NAME_ID_REPORT;
540 void VirtualRuntime::FillFileSet(CallFrame& callFrame, const DfxSymbol& symbol)
544 callFrame.needReport_ |= FILE_PATH_ID_REPORT;
620 bool VirtualRuntime::ArktsGetSymbolCache(CallFrame& callFrame, DfxSymbol &symbol)
622 uint32_t jsfilePathId = FindArkTsFilePath(callFrame.filePath_);
624 auto foundSymbolIter = userSymbolCache_.find(std::pair(callFrame.ip_, jsfilePathId));
652 void VirtualRuntime::FillJsSymbolCache(CallFrame& callFrame, const DfxSymbol& symbol)
654 userSymbolCache_[std::pair(callFrame.ip_, symbol.filePathId_)] = symbol;