Lines Matching defs:callStack

48     if (__builtin_expect(unwindInfoPtr.thread.pid_ == unwindInfoPtr.callStack.lastPid_ &&
49 vaddr == unwindInfoPtr.callStack.lastAddr_, true)) {
50 *data = unwindInfoPtr.callStack.lastData_;
55 unwindInfoPtr.callStack.lastPid_ = unwindInfoPtr.thread.pid_;
56 unwindInfoPtr.callStack.lastAddr_ = vaddr;
57 unwindInfoPtr.callStack.lastData_ = *data;
60 unwindInfoPtr.callStack.lastPid_ = -1;
61 unwindInfoPtr.callStack.lastAddr_ = 0;
191 auto &dynInfoProcessMap = unwindInfoPtr->callStack.unwindTableInfoMap_;
295 if (addr < unwindInfoPtr->callStack.stackPoint_ or
296 addr + sizeof(unw_word_t) >= unwindInfoPtr->callStack.stackEnd_) {
301 unwindInfoPtr->callStack.stackPoint_, unwindInfoPtr->callStack.stackEnd_,
302 unwindInfoPtr->callStack.stackEnd_ - unwindInfoPtr->callStack.stackPoint_);
306 size_t stackOffset = addr - unwindInfoPtr->callStack.stackPoint_;
307 *valuePoint = *(unw_word_t *)&unwindInfoPtr->callStack.stack_[stackOffset];
331 if (unwindInfoPtr->callStack.regsNum_ == 0) {
335 if (!RegisterGetValue(val, unwindInfoPtr->callStack.regs_, static_cast<size_t>(perfRegIndex),
336 unwindInfoPtr->callStack.regsNum_)) {
379 void CallStack::UnwindStep(unw_cursor_t &c, std::vector<DfxFrame> &callStack, size_t maxStackLevel)
381 while (callStack.size() < maxStackLevel) {
404 HLOGV("unwind:%zu: ip 0x%" UNW_WORD_PFLAG " sp 0x%" UNW_WORD_PFLAG "", callStack.size(),
406 if (callStack.back().pc == ip && callStack.back().sp == sp) {
410 callStack.emplace_back(ip, sp);
435 bool CallStack::DoUnwind(const VirtualThread &thread, std::vector<DfxFrame> &callStack,
441 .callStack = *this,
462 UnwindStep(c, callStack, maxStackLevel);
469 const u8 *stack, u64 stackSize, std::vector<DfxFrame> &callStack,
493 HLOGV("unwind:%zu: ip 0x%" PRIx64 " sp 0x%" PRIx64 "", callStack.size(), ip, sp);
494 callStack.emplace_back(ip, sp);
504 return DoUnwind(thread, callStack, maxStackLevel);
506 return DoUnwind2(thread, callStack, maxStackLevel);
654 bool CallStack::DoUnwind2(const VirtualThread &thread, std::vector<DfxFrame> &callStack,
662 .callStack = *this,
684 callStack = unwinder->GetFrames();
685 HLOGD("callStack size:%zu", callStack.size());
686 for (auto frame: callStack) {
689 auto lastIt = callStack.end() - 1;
691 if (lastIt != callStack.end() && preIt != callStack.end() &&
692 callStack.size() > 1 && lastIt->pc == preIt->pc && lastIt->sp == preIt->sp) {
693 callStack.erase(lastIt);
715 auto &tableInfoMap = unwindInfoPtr->callStack.unwindTableInfoMap_;
780 if (addr < unwindInfoPtr->callStack.stackPoint_ or
781 addr + sizeof(uintptr_t) >= unwindInfoPtr->callStack.stackEnd_) {
787 unwindInfoPtr->callStack.stackPoint_, unwindInfoPtr->callStack.stackEnd_,
788 unwindInfoPtr->callStack.stackEnd_ - unwindInfoPtr->callStack.stackPoint_);
792 size_t stackOffset = addr - unwindInfoPtr->callStack.stackPoint_;
793 *val = *(uintptr_t *)&unwindInfoPtr->callStack.stack_[stackOffset];