| Index: src/frames-inl.h
|
| diff --git a/src/frames-inl.h b/src/frames-inl.h
|
| index 4013601dace9c121bf722b131e6a71234dba2df5..c27267002061ce6b4c795ce04e855a27a2ca814f 100644
|
| --- a/src/frames-inl.h
|
| +++ b/src/frames-inl.h
|
| @@ -151,11 +151,11 @@ inline bool StandardFrame::IsConstructFrame(Address fp) {
|
| return marker == Smi::FromInt(StackFrame::CONSTRUCT);
|
| }
|
|
|
| +inline VisibleFrame::VisibleFrame(StackFrameIteratorBase* iterator)
|
| + : StandardFrame(iterator) {}
|
|
|
| inline JavaScriptFrame::JavaScriptFrame(StackFrameIteratorBase* iterator)
|
| - : StandardFrame(iterator) {
|
| -}
|
| -
|
| + : VisibleFrame(iterator) {}
|
|
|
| Address JavaScriptFrame::GetParameterSlot(int index) const {
|
| int param_count = ComputeParametersCount();
|
| @@ -242,6 +242,8 @@ inline ArgumentsAdaptorFrame::ArgumentsAdaptorFrame(
|
| StackFrameIteratorBase* iterator) : JavaScriptFrame(iterator) {
|
| }
|
|
|
| +inline WasmFrame::WasmFrame(StackFrameIteratorBase* iterator)
|
| + : VisibleFrame(iterator) {}
|
|
|
| inline InternalFrame::InternalFrame(StackFrameIteratorBase* iterator)
|
| : StandardFrame(iterator) {
|
| @@ -257,27 +259,42 @@ inline ConstructFrame::ConstructFrame(StackFrameIteratorBase* iterator)
|
| : InternalFrame(iterator) {
|
| }
|
|
|
| -
|
| -inline JavaScriptFrameIterator::JavaScriptFrameIterator(
|
| - Isolate* isolate)
|
| +inline VisibleFrameIterator::VisibleFrameIterator(Isolate* isolate)
|
| : iterator_(isolate) {
|
| if (!done()) Advance();
|
| }
|
|
|
| +inline VisibleFrameIterator::VisibleFrameIterator(
|
| + Isolate* isolate, VisibleFrameIterator::NoAdvance)
|
| + : iterator_(isolate) {}
|
| +
|
| +inline VisibleFrameIterator::VisibleFrameIterator(
|
| + Isolate* isolate, ThreadLocalTop* top, VisibleFrameIterator::NoAdvance)
|
| + : iterator_(isolate, top) {}
|
|
|
| -inline JavaScriptFrameIterator::JavaScriptFrameIterator(
|
| - Isolate* isolate, ThreadLocalTop* top)
|
| - : iterator_(isolate, top) {
|
| +inline JavaScriptFrameIterator::JavaScriptFrameIterator(Isolate* isolate)
|
| + : VisibleFrameIterator(isolate, VisibleFrameIterator::NoAdvance()) {
|
| if (!done()) Advance();
|
| }
|
|
|
| +inline JavaScriptFrameIterator::JavaScriptFrameIterator(Isolate* isolate,
|
| + ThreadLocalTop* top)
|
| + : VisibleFrameIterator(isolate, top, VisibleFrameIterator::NoAdvance()) {
|
| + if (!done()) Advance();
|
| +}
|
|
|
| -inline JavaScriptFrame* JavaScriptFrameIterator::frame() const {
|
| +inline VisibleFrame* VisibleFrameIterator::frame() const {
|
| // TODO(1233797): The frame hierarchy needs to change. It's
|
| // problematic that we can't use the safe-cast operator to cast to
|
| // the JavaScript frame type, because we may encounter arguments
|
| // adaptor frames.
|
| StackFrame* frame = iterator_.frame();
|
| + DCHECK(frame->is_visible() || frame->is_arguments_adaptor());
|
| + return static_cast<VisibleFrame*>(frame);
|
| +}
|
| +
|
| +inline JavaScriptFrame* JavaScriptFrameIterator::frame() const {
|
| + StackFrame* frame = iterator_.frame();
|
| DCHECK(frame->is_java_script() || frame->is_arguments_adaptor());
|
| return static_cast<JavaScriptFrame*>(frame);
|
| }
|
|
|