| Index: src/compiler/control-builders.cc | 
| diff --git a/src/compiler/control-builders.cc b/src/compiler/control-builders.cc | 
| index 6cf2905e613e3e6b4837a262cbe1c3588906d606..582723a40c50699d77a15d4f39479afc45ed3d61 100644 | 
| --- a/src/compiler/control-builders.cc | 
| +++ b/src/compiler/control-builders.cc | 
| @@ -147,6 +147,64 @@ void BlockBuilder::EndBlock() { | 
| break_environment_->Merge(environment()); | 
| set_environment(break_environment_); | 
| } | 
| + | 
| + | 
| +void TryCatchBuilder::BeginTry() { | 
| +  catch_environment_ = environment()->CopyAsUnreachable(); | 
| +  catch_environment_->values()->push_back(nullptr); | 
| } | 
| + | 
| + | 
| +void TryCatchBuilder::Throw(Node* exception) { | 
| +  environment()->values()->push_back(exception); | 
| +  catch_environment_->Merge(environment()); | 
| +  environment()->values()->pop_back(); | 
| +  environment()->MarkAsUnreachable(); | 
| } | 
| -}  // namespace v8::internal::compiler | 
| + | 
| + | 
| +void TryCatchBuilder::EndTry() { | 
| +  exit_environment_ = environment(); | 
| +  exception_node_ = catch_environment_->values()->back(); | 
| +  catch_environment_->values()->pop_back(); | 
| +  set_environment(catch_environment_); | 
| +} | 
| + | 
| + | 
| +void TryCatchBuilder::EndCatch() { | 
| +  exit_environment_->Merge(environment()); | 
| +  set_environment(exit_environment_); | 
| +} | 
| + | 
| + | 
| +void TryFinallyBuilder::BeginTry() { | 
| +  finally_environment_ = environment()->CopyAsUnreachable(); | 
| +  finally_environment_->values()->push_back(nullptr); | 
| +} | 
| + | 
| + | 
| +void TryFinallyBuilder::LeaveTry(Node* token) { | 
| +  environment()->values()->push_back(token); | 
| +  finally_environment_->Merge(environment()); | 
| +  environment()->values()->pop_back(); | 
| +} | 
| + | 
| + | 
| +void TryFinallyBuilder::EndTry(Node* fallthrough_token) { | 
| +  environment()->values()->push_back(fallthrough_token); | 
| +  finally_environment_->Merge(environment()); | 
| +  environment()->values()->pop_back(); | 
| +  token_node_ = finally_environment_->values()->back(); | 
| +  finally_environment_->values()->pop_back(); | 
| +  set_environment(finally_environment_); | 
| +} | 
| + | 
| + | 
| +void TryFinallyBuilder::EndFinally() { | 
| +  // Nothing to be done here. | 
| +} | 
| + | 
| + | 
| +}  // namespace compiler | 
| +}  // namespace internal | 
| +}  // namespace v8 | 
|  |