Index: src/frames.h |
diff --git a/src/frames.h b/src/frames.h |
index a5355a4e8cd76bf0513b37801eb65b5f82b90ccc..88bbbb85feb1b61d78ad1d3497fed117a7d2b49e 100644 |
--- a/src/frames.h |
+++ b/src/frames.h |
@@ -111,6 +111,7 @@ class StackHandler BASE_EMBEDDED { |
V(INTERPRETED, InterpretedFrame) \ |
V(STUB, StubFrame) \ |
V(STUB_FAILURE_TRAMPOLINE, StubFailureTrampolineFrame) \ |
+ V(BUILTIN_CONTINUATION, BuiltinContinuationFrame) \ |
V(INTERNAL, InternalFrame) \ |
V(CONSTRUCT, ConstructFrame) \ |
V(ARGUMENTS_ADAPTOR, ArgumentsAdaptorFrame) \ |
@@ -525,6 +526,9 @@ class StackFrame BASE_EMBEDDED { |
bool is_stub_failure_trampoline() const { |
return type() == STUB_FAILURE_TRAMPOLINE; |
} |
+ bool is_builtin_continuation() const { |
+ return type() == BUILTIN_CONTINUATION; |
+ } |
bool is_construct() const { return type() == CONSTRUCT; } |
bool is_builtin_exit() const { return type() == BUILTIN_EXIT; } |
virtual bool is_standard() const { return false; } |
@@ -1460,6 +1464,21 @@ class ConstructFrame: public InternalFrame { |
friend class StackFrameIteratorBase; |
}; |
+class BuiltinContinuationFrame : public InternalFrame { |
+ public: |
+ Type type() const override { return BUILTIN_CONTINUATION; } |
+ |
+ static BuiltinContinuationFrame* cast(StackFrame* frame) { |
+ DCHECK(frame->is_builtin_continuation()); |
+ return static_cast<BuiltinContinuationFrame*>(frame); |
+ } |
+ |
+ protected: |
+ inline explicit BuiltinContinuationFrame(StackFrameIteratorBase* iterator); |
+ |
+ private: |
+ friend class StackFrameIteratorBase; |
+}; |
class StackFrameIteratorBase BASE_EMBEDDED { |
public: |