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()); |