| 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 |