Index: src/compiler/js-inlining.cc |
diff --git a/src/compiler/js-inlining.cc b/src/compiler/js-inlining.cc |
index 4f1dc7c708fb0328bb39b12170a0c910353e1ea2..635daa4d761421e87dd10f7ff060e7598ce91803 100644 |
--- a/src/compiler/js-inlining.cc |
+++ b/src/compiler/js-inlining.cc |
@@ -16,6 +16,7 @@ |
#include "src/compiler/node-matchers.h" |
#include "src/compiler/node-properties.h" |
#include "src/compiler/operator-properties.h" |
+#include "src/compiler/simplified-operator.h" |
#include "src/compiler/type-hint-analyzer.h" |
#include "src/isolate-inl.h" |
#include "src/parsing/parse-info.h" |
@@ -435,20 +436,15 @@ Reduction JSInliner::ReduceJSCall(Node* node, Handle<JSFunction> function) { |
NodeProperties::ReplaceEffectInput(node, create); |
// Insert a check of the return value to determine whether the return |
// value or the implicit receiver should be selected as a result of the |
- // call. The check is wired into the successful control completion. |
- Node* success = graph()->NewNode(common()->IfSuccess(), node); |
- Node* check = graph()->NewNode( |
- javascript()->CallRuntime(Runtime::kInlineIsJSReceiver, 1), node, |
- context, node, success); |
+ // call. |
+ Node* check = graph()->NewNode(simplified()->ObjectIsReceiver(), node); |
Node* select = |
graph()->NewNode(common()->Select(MachineRepresentation::kTagged), |
check, node, create); |
- NodeProperties::ReplaceUses(node, select, check, check, node); |
+ NodeProperties::ReplaceUses(node, select, node, node, node); |
// Fix-up inputs that have been mangled by the {ReplaceUses} call above. |
NodeProperties::ReplaceValueInput(select, node, 1); // Fix-up input. |
NodeProperties::ReplaceValueInput(check, node, 0); // Fix-up input. |
- NodeProperties::ReplaceEffectInput(check, node); // Fix-up input. |
- NodeProperties::ReplaceControlInput(success, node); // Fix-up input. |
receiver = create; // The implicit receiver. |
} |
@@ -527,6 +523,10 @@ JSOperatorBuilder* JSInliner::javascript() const { |
CommonOperatorBuilder* JSInliner::common() const { return jsgraph()->common(); } |
+SimplifiedOperatorBuilder* JSInliner::simplified() const { |
+ return jsgraph()->simplified(); |
+} |
+ |
} // namespace compiler |
} // namespace internal |
} // namespace v8 |