Lines Matching defs:frame
61 // particular frame. Needs to know the top of the handler chain.
64 StackHandlerIterator(const StackFrame* frame, StackHandler* handler)
65 : limit_(frame->fp()), handler_(handler) {
67 // Make sure the handler has already been unwound to this frame. With stack
69 // frame and the handler could be in different stacks.
71 frame->sp() <= AddressOf(handler));
73 // frame (Execution::CallWasm), so even though its address is already
75 if (frame->is_c_wasm_entry()) handler_ = handler_->next();
77 // Make sure the handler has already been unwound to this frame.
78 DCHECK_LE(frame->sp(), AddressOf(handler));
123 // Compute the state of the calling frame before restoring
125 // frame code that computes the caller state to access the top
130 // Unwind handlers corresponding to the current frame.
135 // Advance to the calling frame.
152 return frame();
214 } while (!iterator_.done() && !iterator_.frame()->is_java_script());
221 if (!done() && !IsValidFrame(iterator_.frame())) Advance();
227 while (!done() && frame()->id() != id) Advance();
233 } while (!done() && !IsValidFrame(iterator_.frame()));
238 if (!iterator_.frame()->is_optimized()) return 1;
240 OptimizedFrame::cast(iterator_.frame())->GetFunctions(&infos);
249 frame()->Summarize(&frames);
264 bool StackTraceFrameIterator::IsValidFrame(StackFrame* frame) {
265 if (frame->is_java_script()) {
266 return IsValidJSFunction(static_cast<JavaScriptFrame*>(frame)->function());
269 if (frame->is_wasm()) return true;
302 // There's no need to run a full ContainsSlow if we know the frame can't be
337 // Check if top stack frame is a bytecode handler stub frame.
344 // Bytecode handler built a frame.
372 // JS to C without an exit frame inbetween. The CEntryStub is responsible
376 // JS frame, because fast C calls cannot call back into JS. We start
377 // iterating the stack from this topmost JS frame.
397 // If the current PC is in a bytecode handler, the top stack frame isn't
398 // the bytecode handler's frame and the top of stack or link register is a
400 // in a bytecode handler with elided frame. In that case, set the PC
401 // properly and make sure we do not drop the frame.
441 // Mark the frame as OPTIMIZED if we cannot determine its type.
447 // The frame anyways will be skipped.
449 // Top frame is incomplete so we cannot reliably determine its type.
474 // Before advancing to the next stack frame, perform pointer validity tests.
480 // Advance to the previous frame.
486 // Check that we have actually moved to the previous frame in the stack.
492 bool SafeStackFrameIterator::IsValidFrame(StackFrame* frame) const {
493 return IsValidStackAddress(frame->sp()) && IsValidStackAddress(frame->fp());
496 bool SafeStackFrameIterator::IsValidCaller(StackFrame* frame) {
498 if (frame->is_entry() || frame->is_construct_entry()) {
503 Memory<Address>(frame->fp() + EntryFrameConstants::kCallerFPOffset);
506 frame->ComputeCallerState(&state);
508 SingletonFor(frame->GetCallerState(&state)) != nullptr;
528 // As long as the setup of a frame is not atomic, we may happen to be
530 // but the frame is not yet entered. So we are actually observing
531 // the previous frame.
546 // frame beneath it. There may be other EXIT frames on top of the
652 // Look up the code object to figure out the type of the stack frame.
731 // profiler in a bogus stack frame.
801 // the calling frame.
867 // The constant pool recorded in the exit frame is not associated
960 accumulator->Add("builtin exit frame: ");
1008 // An empty FP signals the first frame of a stack segment. The caller is
1029 // Make sure that we're not doing "safe" stack frame iteration. We cannot
1124 // The last value in the frame header is the calling PC, which should
1136 // These frame types have a context, but they are actually stored
1137 // in the place on the stack that one finds the frame type.
1147 // slot_space holds the actual number of spill slots, without fixed frame
1154 // Fixed frame slots.
1243 // frame. Conceptionally these parameters belong to the parent frame. However,
1244 // the exact count is only known by this frame (in the presence of tail calls,
1262 // If this frame has JavaScript ABI, visit the context (in stub and JS
1425 if (it.frame()->is_java_script()) {
1426 JavaScriptFrame* frame = it.frame();
1427 if (frame->IsConstructor()) PrintF(file, "new ");
1428 JSFunction function = frame->function();
1431 if (frame->is_interpreted()) {
1432 InterpretedFrame* iframe = reinterpret_cast<InterpretedFrame*>(frame);
1434 } else if (frame->is_baseline()) {
1436 BaselineFrame* baseline_frame = BaselineFrame::cast(frame);
1440 Code code = frame->unchecked_code();
1441 code_offset = code.GetOffsetFromInstructionStart(isolate, frame->pc());
1450 frame->receiver().ShortPrint(file);
1451 const int length = frame->ComputeParametersCount();
1454 frame->GetParameter(i).ShortPrint(file);
1698 FrameSummary FrameSummary::GetTop(const CommonFrame* frame) {
1700 frame->Summarize(&frames);
1705 FrameSummary FrameSummary::GetBottom(const CommonFrame* frame) {
1706 return Get(frame, 0);
1709 FrameSummary FrameSummary::GetSingle(const CommonFrame* frame) {
1711 frame->Summarize(&frames);
1716 FrameSummary FrameSummary::Get(const CommonFrame* frame, int index) {
1719 frame->Summarize(&frames);
1760 // Delegate to JS frame in absence of turbofan deoptimization.
1794 // Get or materialize the correct function in the optimized frame.
1799 // Get or materialize the correct receiver in the optimized frame.
1804 // the translation corresponding to the frame type in question.
1822 // Append full summary of the encountered JS frame.
1830 // The next encountered JS frame will be marked as a constructor call.
1888 // Delegate to JS frame in absence of turbofan deoptimization.
1906 it.Next(); // Skip frame count.
1921 // The second operand of the frame points to the function.
2136 // Check whether our callee is a WASM_TO_JS frame, and this frame is at the
2195 // | frame marker | | no GC scan
2338 accumulator->Add(" {\n// optimized frame\n");
2349 // Try to get hold of the context of this frame.
2373 "// warning: missing context slot - inconsistent frame?");
2376 accumulator->Add("// warning: no context found - inconsistent frame?");
2407 // The frame contains the actual argument count (intptr) that should not be
2427 // the full stack frame contains only tagged pointers or only raw values.
2519 // The 'fixed' part of the frame consists of the incoming parameters and
2545 // If the construct frame appears to be topmost we should ensure that the
2601 // If the builtins frame appears to be topmost we should ensure that the