| OLD | NEW |
| 1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "src/compiler/js-call-reducer.h" | 5 #include "src/compiler/js-call-reducer.h" |
| 6 | 6 |
| 7 #include "src/code-factory.h" | 7 #include "src/code-factory.h" |
| 8 #include "src/code-stubs.h" | 8 #include "src/code-stubs.h" |
| 9 #include "src/compilation-dependencies.h" | 9 #include "src/compilation-dependencies.h" |
| 10 #include "src/compiler/js-graph.h" | 10 #include "src/compiler/js-graph.h" |
| (...skipping 488 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 499 Node* const parameters = frame_state->InputAt(kFrameStateParametersInput); | 499 Node* const parameters = frame_state->InputAt(kFrameStateParametersInput); |
| 500 for (int i = start_index + 1; i < state_info.parameter_count(); ++i) { | 500 for (int i = start_index + 1; i < state_info.parameter_count(); ++i) { |
| 501 node->InsertInput(graph()->zone(), static_cast<int>(++arity), | 501 node->InsertInput(graph()->zone(), static_cast<int>(++arity), |
| 502 parameters->InputAt(i)); | 502 parameters->InputAt(i)); |
| 503 } | 503 } |
| 504 | 504 |
| 505 // TODO(turbofan): Collect call counts on spread call/construct and thread it | 505 // TODO(turbofan): Collect call counts on spread call/construct and thread it |
| 506 // through here. | 506 // through here. |
| 507 if (node->opcode() == IrOpcode::kJSCallWithSpread) { | 507 if (node->opcode() == IrOpcode::kJSCallWithSpread) { |
| 508 NodeProperties::ChangeOp(node, javascript()->Call(arity + 1)); | 508 NodeProperties::ChangeOp(node, javascript()->Call(arity + 1)); |
| 509 Reduction const r = ReduceJSCall(node); |
| 510 return r.Changed() ? r : Changed(node); |
| 509 } else { | 511 } else { |
| 510 NodeProperties::ChangeOp(node, javascript()->Construct(arity + 2)); | 512 NodeProperties::ChangeOp(node, javascript()->Construct(arity + 2)); |
| 513 Reduction const r = ReduceJSConstruct(node); |
| 514 return r.Changed() ? r : Changed(node); |
| 511 } | 515 } |
| 512 return Changed(node); | |
| 513 } | 516 } |
| 514 | 517 |
| 515 namespace { | 518 namespace { |
| 516 | 519 |
| 517 bool ShouldUseCallICFeedback(Node* node) { | 520 bool ShouldUseCallICFeedback(Node* node) { |
| 518 HeapObjectMatcher m(node); | 521 HeapObjectMatcher m(node); |
| 519 if (m.HasValue() || m.IsJSCreateClosure()) { | 522 if (m.HasValue() || m.IsJSCreateClosure()) { |
| 520 // Don't use CallIC feedback when we know the function | 523 // Don't use CallIC feedback when we know the function |
| 521 // being called, i.e. either know the closure itself or | 524 // being called, i.e. either know the closure itself or |
| 522 // at least the SharedFunctionInfo. | 525 // at least the SharedFunctionInfo. |
| (...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 858 return jsgraph()->javascript(); | 861 return jsgraph()->javascript(); |
| 859 } | 862 } |
| 860 | 863 |
| 861 SimplifiedOperatorBuilder* JSCallReducer::simplified() const { | 864 SimplifiedOperatorBuilder* JSCallReducer::simplified() const { |
| 862 return jsgraph()->simplified(); | 865 return jsgraph()->simplified(); |
| 863 } | 866 } |
| 864 | 867 |
| 865 } // namespace compiler | 868 } // namespace compiler |
| 866 } // namespace internal | 869 } // namespace internal |
| 867 } // namespace v8 | 870 } // namespace v8 |
| OLD | NEW |