| Index: src/compiler/operator-properties.cc
|
| diff --git a/src/compiler/operator-properties.cc b/src/compiler/operator-properties.cc
|
| index 05891e1a743275dcd081c4cfe791e62775538007..3a91fd6b581b5e6a94e68f36df95efb4fd09ff0a 100644
|
| --- a/src/compiler/operator-properties.cc
|
| +++ b/src/compiler/operator-properties.cc
|
| @@ -64,12 +64,17 @@ int OperatorProperties::GetFrameStateInputCount(const Operator* op) {
|
|
|
| // Properties
|
| case IrOpcode::kJSLoadNamed:
|
| - case IrOpcode::kJSLoadProperty:
|
| case IrOpcode::kJSStoreNamed:
|
| - case IrOpcode::kJSStoreProperty:
|
| + case IrOpcode::kJSLoadProperty:
|
| case IrOpcode::kJSDeleteProperty:
|
| return 1;
|
|
|
| + // StoreProperty provides a second frame state just before
|
| + // the operation. This is used to lazy-deoptimize a to-number
|
| + // conversion for typed arrays.
|
| + case IrOpcode::kJSStoreProperty:
|
| + return 2;
|
| +
|
| // Binary operators that can deopt in the middle the operation (e.g.,
|
| // as a result of lazy deopt in ToNumber conversion) need a second frame
|
| // state so that we can resume before the operation.
|
|
|