Chromium Code Reviews| Index: src/compiler/js-inlining.cc |
| diff --git a/src/compiler/js-inlining.cc b/src/compiler/js-inlining.cc |
| index c199620364b1bd48a7563861c88816c9cadaf5db..3f1f98be072c62ed8f1e3ed2cdf307668385043f 100644 |
| --- a/src/compiler/js-inlining.cc |
| +++ b/src/compiler/js-inlining.cc |
| @@ -290,6 +290,27 @@ namespace { |
| // function, which either returns the map set from the CheckMaps or |
| // a singleton set from a StoreField. |
| bool NeedsConvertReceiver(Node* receiver, Node* effect) { |
| + // Check if the {receiver} is already a JSReceiver. |
| + switch (receiver->opcode()) { |
| + case IrOpcode::kJSConstruct: |
| + case IrOpcode::kJSConstructWithSpread: |
| + case IrOpcode::kJSCreate: |
| + case IrOpcode::kJSCreateArguments: |
| + case IrOpcode::kJSCreateArray: |
| + case IrOpcode::kJSCreateClosure: |
| + case IrOpcode::kJSCreateIterResultObject: |
| + case IrOpcode::kJSCreateKeyValueArray: |
| + case IrOpcode::kJSCreateLiteralArray: |
| + case IrOpcode::kJSCreateLiteralObject: |
| + case IrOpcode::kJSCreateLiteralRegExp: |
| + case IrOpcode::kJSConvertReceiver: |
| + case IrOpcode::kJSGetSuperConstructor: |
| + case IrOpcode::kJSToObject: |
| + return false; |
| + default: |
| + break; |
| + } |
| + if (receiver->opcode() == IrOpcode::kJSCreate) return false; |
|
Jarin
2017/02/17 10:07:46
This line is not necessary anymore, no?
Benedikt Meurer
2017/02/17 10:09:40
Done.
|
| for (Node* dominator = effect;;) { |
| if (dominator->opcode() == IrOpcode::kCheckMaps && |
| NodeProperties::IsSame(dominator->InputAt(0), receiver)) { |