Index: src/interpreter/control-flow-builders.h |
diff --git a/src/interpreter/control-flow-builders.h b/src/interpreter/control-flow-builders.h |
index 24a7dfe3e5bf35730c2dbd23a0d411f8ac14a84a..2de3887a64be0a8a45cab19fcea6f26bf1efff61 100644 |
--- a/src/interpreter/control-flow-builders.h |
+++ b/src/interpreter/control-flow-builders.h |
@@ -144,6 +144,39 @@ class SwitchBuilder final : public BreakableControlFlowBuilder { |
ZoneVector<BytecodeLabel> case_sites_; |
}; |
+ |
+// A class to help with co-ordinating control flow in try-catch statements. |
+class TryCatchBuilder final : public ControlFlowBuilder { |
+ public: |
+ explicit TryCatchBuilder(BytecodeArrayBuilder* builder) |
+ : ControlFlowBuilder(builder), handler_id_(builder->NewHandlerEntry()) {} |
+ |
+ void BeginTry(Register context); |
+ void EndTry(); |
+ void EndCatch(); |
+ |
+ private: |
+ int handler_id_; |
+ BytecodeLabel handler_; |
+ BytecodeLabel exit_; |
+}; |
+ |
+ |
+// A class to help with co-ordinating control flow in try-finally statements. |
+class TryFinallyBuilder final : public ControlFlowBuilder { |
+ public: |
+ explicit TryFinallyBuilder(BytecodeArrayBuilder* builder) |
+ : ControlFlowBuilder(builder), handler_id_(builder->NewHandlerEntry()) {} |
+ |
+ void BeginTry(Register context); |
+ void EndTry(); |
+ void EndFinally(); |
+ |
+ private: |
+ int handler_id_; |
+ BytecodeLabel handler_; |
+}; |
+ |
} // namespace interpreter |
} // namespace internal |
} // namespace v8 |