| Index: src/frames-inl.h
|
| diff --git a/src/frames-inl.h b/src/frames-inl.h
|
| index c45f015a231318300cbc4a9f44421f48f251b59c..2ef69c31dae1553270d62fe631fb50b8c8ff4cc2 100644
|
| --- a/src/frames-inl.h
|
| +++ b/src/frames-inl.h
|
| @@ -98,6 +98,12 @@ inline ExitFrame::ExitFrame(StackFrameIteratorBase* iterator)
|
| : StackFrame(iterator) {
|
| }
|
|
|
| +inline BuiltinExitFrame::BuiltinExitFrame(StackFrameIteratorBase* iterator)
|
| + : ExitFrame(iterator) {}
|
| +
|
| +inline Object* BuiltinExitFrame::function_slot_object() const {
|
| + return Memory::Object_at(fp() + kFunctionOffset);
|
| +}
|
|
|
| inline StandardFrame::StandardFrame(StackFrameIteratorBase* iterator)
|
| : StackFrame(iterator) {
|
| @@ -284,7 +290,7 @@ inline JavaScriptFrame* JavaScriptFrameIterator::frame() const {
|
| inline StandardFrame* StackTraceFrameIterator::frame() const {
|
| StackFrame* frame = iterator_.frame();
|
| DCHECK(frame->is_java_script() || frame->is_arguments_adaptor() ||
|
| - frame->is_wasm());
|
| + frame->is_wasm() || frame->is_builtin_exit());
|
| return static_cast<StandardFrame*>(frame);
|
| }
|
|
|
| @@ -294,6 +300,10 @@ bool StackTraceFrameIterator::is_javascript() const {
|
|
|
| bool StackTraceFrameIterator::is_wasm() const { return frame()->is_wasm(); }
|
|
|
| +bool StackTraceFrameIterator::is_builtin_exit() const {
|
| + return frame()->is_builtin_exit();
|
| +}
|
| +
|
| JavaScriptFrame* StackTraceFrameIterator::javascript_frame() const {
|
| DCHECK(is_javascript());
|
| return static_cast<JavaScriptFrame*>(frame());
|
| @@ -304,6 +314,11 @@ WasmFrame* StackTraceFrameIterator::wasm_frame() const {
|
| return static_cast<WasmFrame*>(frame());
|
| }
|
|
|
| +BuiltinExitFrame* StackTraceFrameIterator::builtin_exit_frame() const {
|
| + DCHECK(is_builtin_exit());
|
| + return static_cast<BuiltinExitFrame*>(iterator_.frame());
|
| +}
|
| +
|
| inline StackFrame* SafeStackFrameIterator::frame() const {
|
| DCHECK(!done());
|
| DCHECK(frame_->is_java_script() || frame_->is_exit());
|
|
|