Index: src/frames.h |
diff --git a/src/frames.h b/src/frames.h |
index fb786df539d7b31d6a1a53ad8f6482c411d75973..99e2b256879d3fa79b667de5d581e45795387edf 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) \ |
@@ -523,6 +524,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; } |
@@ -1458,6 +1462,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: |