| Index: src/compiler/js-operator.cc
 | 
| diff --git a/src/compiler/js-operator.cc b/src/compiler/js-operator.cc
 | 
| index e4b4fea4ceca75152316add415a05954de729a98..44759b0a947872a93dd7a5e091345070704ef678 100644
 | 
| --- a/src/compiler/js-operator.cc
 | 
| +++ b/src/compiler/js-operator.cc
 | 
| @@ -490,6 +490,32 @@ const CreateLiteralParameters& CreateLiteralParametersOf(const Operator* op) {
 | 
|    return OpParameter<CreateLiteralParameters>(op);
 | 
|  }
 | 
|  
 | 
| +bool operator==(GeneratorStoreParameters const& lhs,
 | 
| +                GeneratorStoreParameters const& rhs) {
 | 
| +  return lhs.register_count() == rhs.register_count() &&
 | 
| +         lhs.suspend_type() == rhs.suspend_type();
 | 
| +}
 | 
| +bool operator!=(GeneratorStoreParameters const& lhs,
 | 
| +                GeneratorStoreParameters const& rhs) {
 | 
| +  return !(lhs == rhs);
 | 
| +}
 | 
| +
 | 
| +size_t hash_value(GeneratorStoreParameters const& p) {
 | 
| +  return base::hash_combine(p.register_count(),
 | 
| +                            static_cast<int>(p.suspend_type()));
 | 
| +}
 | 
| +
 | 
| +std::ostream& operator<<(std::ostream& os, GeneratorStoreParameters const& p) {
 | 
| +  const char* suspend_type =
 | 
| +      p.suspend_type() == SuspendType::kYield ? "yield" : "await";
 | 
| +  return os << p.register_count() << " (" << suspend_type << ")";
 | 
| +}
 | 
| +
 | 
| +const GeneratorStoreParameters& GeneratorStoreParametersOf(const Operator* op) {
 | 
| +  DCHECK_EQ(op->opcode(), IrOpcode::kJSGeneratorStore);
 | 
| +  return OpParameter<GeneratorStoreParameters>(op);
 | 
| +}
 | 
| +
 | 
|  BinaryOperationHint BinaryOperationHintOf(const Operator* op) {
 | 
|    DCHECK(op->opcode() == IrOpcode::kJSBitwiseOr ||
 | 
|           op->opcode() == IrOpcode::kJSBitwiseXor ||
 | 
| @@ -781,12 +807,14 @@ const Operator* JSOperatorBuilder::LoadProperty(
 | 
|        access);                                             // parameter
 | 
|  }
 | 
|  
 | 
| -const Operator* JSOperatorBuilder::GeneratorStore(int register_count) {
 | 
| -  return new (zone()) Operator1<int>(                   // --
 | 
| -      IrOpcode::kJSGeneratorStore, Operator::kNoThrow,  // opcode
 | 
| -      "JSGeneratorStore",                               // name
 | 
| -      3 + register_count, 1, 1, 0, 1, 0,                // counts
 | 
| -      register_count);                                  // parameter
 | 
| +const Operator* JSOperatorBuilder::GeneratorStore(int register_count,
 | 
| +                                                  SuspendType suspend_type) {
 | 
| +  GeneratorStoreParameters parameters(register_count, suspend_type);
 | 
| +  return new (zone()) Operator1<GeneratorStoreParameters>(  // --
 | 
| +      IrOpcode::kJSGeneratorStore, Operator::kNoThrow,      // opcode
 | 
| +      "JSGeneratorStore",                                   // name
 | 
| +      3 + register_count, 1, 1, 0, 1, 0,                    // counts
 | 
| +      parameters);                                          // parameter
 | 
|  }
 | 
|  
 | 
|  const Operator* JSOperatorBuilder::GeneratorRestoreRegister(int index) {
 | 
| 
 |