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-native-context-specialization.h" | 5 #include "src/compiler/js-native-context-specialization.h" |
6 | 6 |
7 #include "src/accessors.h" | 7 #include "src/accessors.h" |
8 #include "src/compilation-dependencies.h" | 8 #include "src/compilation-dependencies.h" |
9 #include "src/compiler/access-builder.h" | 9 #include "src/compiler/access-builder.h" |
10 #include "src/compiler/js-graph.h" | 10 #include "src/compiler/js-graph.h" |
(...skipping 590 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
601 } | 601 } |
602 | 602 |
603 // Collect the fallthru control as final "exit" control. | 603 // Collect the fallthru control as final "exit" control. |
604 exit_controls.push_back(fallthrough_control); | 604 exit_controls.push_back(fallthrough_control); |
605 | 605 |
606 // TODO(bmeurer/mtrofin): Splintering cannot currently deal with deferred | 606 // TODO(bmeurer/mtrofin): Splintering cannot currently deal with deferred |
607 // blocks that contain only a single non-deoptimize instruction (i.e. a | 607 // blocks that contain only a single non-deoptimize instruction (i.e. a |
608 // jump). Generating a single Merge here, which joins all the deoptimizing | 608 // jump). Generating a single Merge here, which joins all the deoptimizing |
609 // controls would generate a lot of these basic blocks, however. So this | 609 // controls would generate a lot of these basic blocks, however. So this |
610 // is disabled for now until splintering is fixed. | 610 // is disabled for now until splintering is fixed. |
611 #if 0 | 611 #if 1 |
612 // Generate the single "exit" point, where we get if either all map/instance | 612 // Generate the single "exit" point, where we get if either all map/instance |
613 // type checks failed, or one of the assumptions inside one of the cases | 613 // type checks failed, or one of the assumptions inside one of the cases |
614 // failes (i.e. failing prototype chain check). | 614 // failes (i.e. failing prototype chain check). |
615 // TODO(bmeurer): Consider falling back to IC here if deoptimization is | 615 // TODO(bmeurer): Consider falling back to IC here if deoptimization is |
616 // disabled. | 616 // disabled. |
617 int const exit_control_count = static_cast<int>(exit_controls.size()); | 617 int const exit_control_count = static_cast<int>(exit_controls.size()); |
618 Node* exit_control = | 618 Node* exit_control = |
619 (exit_control_count == 1) | 619 (exit_control_count == 1) |
620 ? exit_controls.front() | 620 ? exit_controls.front() |
621 : graph()->NewNode(common()->Merge(exit_control_count), | 621 : graph()->NewNode(common()->Merge(exit_control_count), |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
709 } | 709 } |
710 | 710 |
711 | 711 |
712 SimplifiedOperatorBuilder* JSNativeContextSpecialization::simplified() const { | 712 SimplifiedOperatorBuilder* JSNativeContextSpecialization::simplified() const { |
713 return jsgraph()->simplified(); | 713 return jsgraph()->simplified(); |
714 } | 714 } |
715 | 715 |
716 } // namespace compiler | 716 } // namespace compiler |
717 } // namespace internal | 717 } // namespace internal |
718 } // namespace v8 | 718 } // namespace v8 |
OLD | NEW |