Index: src/compiler/js-intrinsic-lowering.cc |
diff --git a/src/compiler/js-intrinsic-lowering.cc b/src/compiler/js-intrinsic-lowering.cc |
index 285fa162f98f722321f4cdac4906634d0ceb1a24..7fc50e5f5fcb462ff3c0167e70829736f76ead17 100644 |
--- a/src/compiler/js-intrinsic-lowering.cc |
+++ b/src/compiler/js-intrinsic-lowering.cc |
@@ -314,27 +314,14 @@ |
} |
Reduction JSIntrinsicLowering::ReduceGetSuperConstructor(Node* node) { |
- Node* target = NodeProperties::GetValueInput(node, 0); |
- // The prototype of subclass constructors is non-writable, non-configurable |
- // in ES6, so we don't need to do any checking, but we can just load (or even |
- // constant-fold) the prototype from the {target}. |
- HeapObjectMatcher m(target); |
- if (m.HasValue()) { |
- Handle<JSFunction> target_function = Handle<JSFunction>::cast(m.Value()); |
- Node* value = jsgraph()->HeapConstant(handle( |
- JSFunction::cast(target_function->map()->prototype()), isolate())); |
- ReplaceWithValue(node, value); |
- return Replace(value); |
- } else { |
- Node* effect = NodeProperties::GetEffectInput(node); |
- Node* control = NodeProperties::GetControlInput(node); |
- Node* target_map = effect = |
- graph()->NewNode(simplified()->LoadField(AccessBuilder::ForMap()), |
- target, effect, control); |
- return Change(node, |
- simplified()->LoadField(AccessBuilder::ForMapPrototype()), |
- target_map, effect, control); |
- } |
+ Node* active_function = NodeProperties::GetValueInput(node, 0); |
+ Node* effect = NodeProperties::GetEffectInput(node); |
+ Node* control = NodeProperties::GetControlInput(node); |
+ Node* active_function_map = effect = |
+ graph()->NewNode(simplified()->LoadField(AccessBuilder::ForMap()), |
+ active_function, effect, control); |
+ return Change(node, simplified()->LoadField(AccessBuilder::ForMapPrototype()), |
+ active_function_map, effect, control); |
} |
Reduction JSIntrinsicLowering::Change(Node* node, const Operator* op, Node* a, |