| Index: src/compiler/common-operator.cc | 
| diff --git a/src/compiler/common-operator.cc b/src/compiler/common-operator.cc | 
| index f63c073c2c5c1aab55fa3fe903f82fdfa939cf99..0a1510ee4ef19dea0b11b3eef4b7f92db901da6e 100644 | 
| --- a/src/compiler/common-operator.cc | 
| +++ b/src/compiler/common-operator.cc | 
| @@ -75,15 +75,31 @@ DeoptimizeParameters const& DeoptimizeParametersOf(Operator const* const op) { | 
| return OpParameter<DeoptimizeParameters>(op); | 
| } | 
|  | 
| +IfExceptionHint ExceptionHintFromCatchPrediction( | 
| +    HandlerTable::CatchPrediction prediction) { | 
| +  switch (prediction) { | 
| +    case HandlerTable::UNCAUGHT: | 
| +      return IfExceptionHint::kLocallyUncaught; | 
| +    case HandlerTable::CAUGHT: | 
| +      return IfExceptionHint::kLocallyCaught; | 
| +    case HandlerTable::PROMISE: | 
| +      return IfExceptionHint::kLocallyCaughtForPromiseReject; | 
| +  } | 
| +  UNREACHABLE(); | 
| +  return IfExceptionHint::kLocallyUncaught; | 
| +} | 
| + | 
| size_t hash_value(IfExceptionHint hint) { return static_cast<size_t>(hint); } | 
|  | 
|  | 
| std::ostream& operator<<(std::ostream& os, IfExceptionHint hint) { | 
| switch (hint) { | 
| -    case IfExceptionHint::kLocallyCaught: | 
| -      return os << "Caught"; | 
| case IfExceptionHint::kLocallyUncaught: | 
| return os << "Uncaught"; | 
| +    case IfExceptionHint::kLocallyCaught: | 
| +      return os << "Caught"; | 
| +    case IfExceptionHint::kLocallyCaughtForPromiseReject: | 
| +      return os << "CaughtForPromiseReject"; | 
| } | 
| UNREACHABLE(); | 
| return os; | 
| @@ -345,8 +361,10 @@ struct CommonOperatorGlobalCache final { | 
| 0, 1, 1, 1, 1, 1,                            // counts | 
| kCaughtLocally) {}                           // parameter | 
| }; | 
| -  IfExceptionOperator<IfExceptionHint::kLocallyCaught> kIfExceptionCOperator; | 
| IfExceptionOperator<IfExceptionHint::kLocallyUncaught> kIfExceptionUOperator; | 
| +  IfExceptionOperator<IfExceptionHint::kLocallyCaught> kIfExceptionCOperator; | 
| +  IfExceptionOperator<IfExceptionHint::kLocallyCaughtForPromiseReject> | 
| +      kIfExceptionPOperator; | 
|  | 
| template <size_t kInputCount> | 
| struct EndOperator final : public Operator { | 
| @@ -602,10 +620,12 @@ const Operator* CommonOperatorBuilder::DeoptimizeUnless( | 
|  | 
| const Operator* CommonOperatorBuilder::IfException(IfExceptionHint hint) { | 
| switch (hint) { | 
| -    case IfExceptionHint::kLocallyCaught: | 
| -      return &cache_.kIfExceptionCOperator; | 
| case IfExceptionHint::kLocallyUncaught: | 
| return &cache_.kIfExceptionUOperator; | 
| +    case IfExceptionHint::kLocallyCaught: | 
| +      return &cache_.kIfExceptionCOperator; | 
| +    case IfExceptionHint::kLocallyCaughtForPromiseReject: | 
| +      return &cache_.kIfExceptionPOperator; | 
| } | 
| UNREACHABLE(); | 
| return nullptr; | 
|  |