| Index: src/compiler/js-builtin-reducer.cc
|
| diff --git a/src/compiler/js-builtin-reducer.cc b/src/compiler/js-builtin-reducer.cc
|
| index bf72ca47302545484b5bef10b88627210a6daa63..64c46c8b6756d9b75efd342973b5ff287d001bf6 100644
|
| --- a/src/compiler/js-builtin-reducer.cc
|
| +++ b/src/compiler/js-builtin-reducer.cc
|
| @@ -911,27 +911,15 @@ bool HasInstanceTypeWitness(Node* receiver, Node* effect,
|
| }
|
| return true;
|
| }
|
| - switch (dominator->opcode()) {
|
| - case IrOpcode::kStoreField: {
|
| - FieldAccess const& access = FieldAccessOf(dominator->op());
|
| - if (access.base_is_tagged == kTaggedBase &&
|
| - access.offset == HeapObject::kMapOffset) {
|
| - return false;
|
| - }
|
| - break;
|
| - }
|
| - case IrOpcode::kStoreElement:
|
| - case IrOpcode::kStoreTypedElement:
|
| - break;
|
| - default: {
|
| - DCHECK_EQ(1, dominator->op()->EffectOutputCount());
|
| - if (dominator->op()->EffectInputCount() != 1 ||
|
| - !dominator->op()->HasProperty(Operator::kNoWrite)) {
|
| - // Didn't find any appropriate CheckMaps node.
|
| - return false;
|
| - }
|
| - break;
|
| - }
|
| + // The instance type doesn't change for JSReceiver values, so we
|
| + // don't need to pay attention to potentially side-effecting nodes
|
| + // here. Strings and internal structures like FixedArray and
|
| + // FixedDoubleArray are weird here, but we don't use this function then.
|
| + DCHECK_LE(FIRST_JS_RECEIVER_TYPE, instance_type);
|
| + DCHECK_EQ(1, dominator->op()->EffectOutputCount());
|
| + if (dominator->op()->EffectInputCount() != 1) {
|
| + // Didn't find any appropriate CheckMaps node.
|
| + return false;
|
| }
|
| dominator = NodeProperties::GetEffectInput(dominator);
|
| }
|
|
|