Home | History | Annotate | Download | only in qtools

Lines Matching full:frame

18 // Define a template class for the stack frame.  The template parameter
46 template <class FRAME, class BASE = CallStackBase>
49 typedef FRAME frame_type;
50 typedef typename FRAME::symbol_type symbol_type;
51 typedef typename FRAME::symbol_type::region_type region_type;
73 FRAME *mFrames;
74 int mTop; // index of the next stack frame to write
114 template<class FRAME, class BASE>
115 MethodRec CallStack<FRAME, BASE>::sCurrentMethod;
116 template<class FRAME, class BASE>
117 MethodRec CallStack<FRAME, BASE>::sNextMethod;
119 template<class FRAME, class BASE>
120 CallStack<FRAME, BASE>::CallStack(int id, int numFrames, TraceReaderType *trace)
126 mFrames = new FRAME[mNumFrames];
153 template<class FRAME, class BASE>
154 CallStack<FRAME, BASE>::~CallStack()
159 template<class FRAME, class BASE>
161 CallStack<FRAME, BASE>::updateStack(BBEvent *event, symbol_type *function)
222 flags = FRAME::kInterpreted;
231 template<class FRAME, class BASE>
233 CallStack<FRAME, BASE>::threadStart(uint64_t time)
238 template<class FRAME, class BASE>
240 CallStack<FRAME, BASE>::threadStop(uint64_t time)
245 template<class FRAME, class BASE>
246 typename CallStack<FRAME, BASE>::Action
247 CallStack<FRAME, BASE>::getAction(BBEvent *event, symbol_type *function)
382 template<class FRAME, class BASE>
383 void CallStack<FRAME, BASE>::doPush(BBEvent *event, symbol_type *function)
400 // it if we are popping off a frame for a vector table.
465 frame is the one that caused an
468 && (mFrames[mTop - 1].flags & FRAME::kCausedException)) {
469 mFrames[mTop - 1].flags &= ~FRAME::kCausedException;
482 // stack frame so that we know where to return when the exception
485 mFrames[mTop - 1].flags |= FRAME::kCausedException;
492 flags = FRAME::kInterpreted;
497 template<class FRAME, class BASE>
498 void CallStack<FRAME, BASE>::doSimplePush(symbol_type *function, uint32_t addr,
518 template<class FRAME, class BASE>
519 void CallStack<FRAME, BASE>::doSimplePop(uint64_t time)
539 bool newerIsJava = (mFrames[mTop].flags & FRAME::kInterpreted) != 0;
540 bool olderIsJava = (mFrames[mTop - 1].flags & FRAME::kInterpreted) != 0;
551 template<class FRAME, class BASE>
552 void CallStack<FRAME, BASE>::doPop(BBEvent *event, symbol_type *function,
558 // The most common case is that we pop one stack frame, but
568 // If this stack frame caused an exception, then do not pop
569 // this stack frame.
570 if (mFrames[stackLevel].flags & FRAME::kPopBarrier) {
573 if (mFrames[stackLevel].flags & FRAME::kInterpreted) {
590 // Compare the function with the one in the stack frame.
593 // including this frame. But allow popping this frame if this
596 // pop this frame
599 // do not pop this frame
604 // If this stack frame caused an exception, then do not pop
605 // this stack frame.
606 if (mFrames[stackLevel].flags & FRAME::kPopBarrier) {
609 if (mFrames[stackLevel].flags & FRAME::kInterpreted) {
624 // Note that if we didn't find a matching stack frame, we will pop
626 // frame on the stack). This is intentional because we may have
650 // Clear the "caused exception" bit on the current stack frame
652 mFrames[mTop - 1].flags &= ~FRAME::kCausedException;
670 // We may need to pop more than one frame, so just
680 template<class FRAME, class BASE>
681 void CallStack<FRAME, BASE>::popAll(uint64_t time)
689 template<class FRAME, class BASE>
690 void CallStack<FRAME, BASE>::doMethodPop(BBEvent *event, uint32_t addr,
695 // Search the stack from the top down for a frame that contains a
702 if (flags == FRAME::kStartNative)
712 // If we found a matching frame then pop the stack up to and including
713 // that frame.
721 template<class FRAME, class BASE>
722 void CallStack<FRAME, BASE>::doMethodAction(BBEvent *event, symbol_type *function)
740 doSimplePush(function, 0, time, FRAME::kInterpreted);
743 doSimplePush(function, 0, time, FRAME::kStartNative);
746 doMethodPop(event, sCurrentMethod.addr, FRAME::kInterpreted);
748 doMethodPop(event, sCurrentMethod.addr, FRAME::kStartNative);
760 template<class FRAME, class BASE>
761 void CallStack<FRAME, BASE>::showStack(FILE *stream)