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/code-factory.h" | 8 #include "src/code-factory.h" |
9 #include "src/compilation-dependencies.h" | 9 #include "src/compilation-dependencies.h" |
10 #include "src/compiler/access-builder.h" | 10 #include "src/compiler/access-builder.h" |
(...skipping 555 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
566 Node* check = | 566 Node* check = |
567 graph()->NewNode(simplified()->ReferenceEqual(Type::Any()), | 567 graph()->NewNode(simplified()->ReferenceEqual(Type::Any()), |
568 receiver_map, jsgraph()->Constant(map)); | 568 receiver_map, jsgraph()->Constant(map)); |
569 if (--num_classes == 0 && num_transitions == 0 && | 569 if (--num_classes == 0 && num_transitions == 0 && |
570 j == access_infos.size() - 1) { | 570 j == access_infos.size() - 1) { |
571 // Last map check on the fallthrough control path, do a conditional | 571 // Last map check on the fallthrough control path, do a conditional |
572 // eager deoptimization exit here. | 572 // eager deoptimization exit here. |
573 // TODO(turbofan): This is ugly as hell! We should probably introduce | 573 // TODO(turbofan): This is ugly as hell! We should probably introduce |
574 // macro-ish operators for property access that encapsulate this whole | 574 // macro-ish operators for property access that encapsulate this whole |
575 // mess. | 575 // mess. |
576 Node* deoptimize = | 576 Node* deoptimize = graph()->NewNode( |
577 graph()->NewNode(common()->DeoptimizeUnless(), check, frame_state, | 577 simplified()->CheckUnless(), check, effect, fallthrough_control); |
578 effect, fallthrough_control); | 578 this_controls.push_back(fallthrough_control); |
579 this_controls.push_back(deoptimize); | |
580 this_effects.push_back(deoptimize); | 579 this_effects.push_back(deoptimize); |
581 fallthrough_control = nullptr; | 580 fallthrough_control = nullptr; |
582 } else { | 581 } else { |
583 Node* branch = | 582 Node* branch = |
584 graph()->NewNode(common()->Branch(), check, fallthrough_control); | 583 graph()->NewNode(common()->Branch(), check, fallthrough_control); |
585 this_controls.push_back(graph()->NewNode(common()->IfTrue(), branch)); | 584 this_controls.push_back(graph()->NewNode(common()->IfTrue(), branch)); |
586 this_effects.push_back(effect); | 585 this_effects.push_back(effect); |
587 fallthrough_control = graph()->NewNode(common()->IfFalse(), branch); | 586 fallthrough_control = graph()->NewNode(common()->IfFalse(), branch); |
588 } | 587 } |
589 if (!map->IsJSArrayMap()) receiver_is_jsarray = false; | 588 if (!map->IsJSArrayMap()) receiver_is_jsarray = false; |
(...skipping 501 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1091 } | 1090 } |
1092 | 1091 |
1093 | 1092 |
1094 SimplifiedOperatorBuilder* JSNativeContextSpecialization::simplified() const { | 1093 SimplifiedOperatorBuilder* JSNativeContextSpecialization::simplified() const { |
1095 return jsgraph()->simplified(); | 1094 return jsgraph()->simplified(); |
1096 } | 1095 } |
1097 | 1096 |
1098 } // namespace compiler | 1097 } // namespace compiler |
1099 } // namespace internal | 1098 } // namespace internal |
1100 } // namespace v8 | 1099 } // namespace v8 |
OLD | NEW |