StackVisitor::Status operator()(StackVisitor& visitor) const { if (m_remainingCapacityForFrameCapture) { // If callee is unknown, but we've not added any frame yet, we should // still add the frame, because something called us, and gave us arguments. JSObject* callee = visitor->callee(); if (!callee && visitor->index()) return StackVisitor::Done; StringBuilder& builder = m_builder; if (!builder.isEmpty()) builder.append('\n'); builder.append('#'); builder.appendNumber(visitor->index()); builder.append(' '); builder.append(visitor->functionName()); builder.appendLiteral("() at "); builder.append(visitor->sourceURL()); if (visitor->isJSFrame()) { builder.append(':'); unsigned lineNumber; unsigned unusedColumn; visitor->computeLineAndColumn(lineNumber, unusedColumn); builder.appendNumber(lineNumber); } if (!callee) return StackVisitor::Done; m_remainingCapacityForFrameCapture--; return StackVisitor::Continue; } return StackVisitor::Done; }
StackVisitor::Status operator()(StackVisitor& visitor) { if (m_needToSkipAFrame) { m_needToSkipAFrame = false; return StackVisitor::Continue; } if (m_remainingCapacityForFrameCapture) { unsigned line; unsigned column; visitor->computeLineAndColumn(line, column); m_frames.append(ScriptCallFrame(visitor->functionName(), visitor->sourceURL(), line, column)); m_remainingCapacityForFrameCapture--; return StackVisitor::Continue; } return StackVisitor::Done; }