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. |