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 = graph()->NewNode( | 576 Node* deoptimize = |
577 simplified()->CheckUnless(), check, effect, fallthrough_control); | 577 graph()->NewNode(common()->DeoptimizeUnless(), check, frame_state, |
578 this_controls.push_back(fallthrough_control); | 578 effect, fallthrough_control); |
| 579 this_controls.push_back(deoptimize); |
579 this_effects.push_back(deoptimize); | 580 this_effects.push_back(deoptimize); |
580 fallthrough_control = nullptr; | 581 fallthrough_control = nullptr; |
581 } else { | 582 } else { |
582 Node* branch = | 583 Node* branch = |
583 graph()->NewNode(common()->Branch(), check, fallthrough_control); | 584 graph()->NewNode(common()->Branch(), check, fallthrough_control); |
584 this_controls.push_back(graph()->NewNode(common()->IfTrue(), branch)); | 585 this_controls.push_back(graph()->NewNode(common()->IfTrue(), branch)); |
585 this_effects.push_back(effect); | 586 this_effects.push_back(effect); |
586 fallthrough_control = graph()->NewNode(common()->IfFalse(), branch); | 587 fallthrough_control = graph()->NewNode(common()->IfFalse(), branch); |
587 } | 588 } |
588 if (!map->IsJSArrayMap()) receiver_is_jsarray = false; | 589 if (!map->IsJSArrayMap()) receiver_is_jsarray = false; |
(...skipping 501 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1090 } | 1091 } |
1091 | 1092 |
1092 | 1093 |
1093 SimplifiedOperatorBuilder* JSNativeContextSpecialization::simplified() const { | 1094 SimplifiedOperatorBuilder* JSNativeContextSpecialization::simplified() const { |
1094 return jsgraph()->simplified(); | 1095 return jsgraph()->simplified(); |
1095 } | 1096 } |
1096 | 1097 |
1097 } // namespace compiler | 1098 } // namespace compiler |
1098 } // namespace internal | 1099 } // namespace internal |
1099 } // namespace v8 | 1100 } // namespace v8 |
OLD | NEW |