Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(881)

Side by Side Diff: src/compiler/js-native-context-specialization.cc

Issue 2187283002: [Turbofan] Soft deopt if we only have deprecated maps on optimization. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 // Compute property access infos for the receiver maps. 91 // Compute property access infos for the receiver maps.
92 AccessInfoFactory access_info_factory(dependencies(), native_context, 92 AccessInfoFactory access_info_factory(dependencies(), native_context,
93 graph()->zone()); 93 graph()->zone());
94 ZoneVector<PropertyAccessInfo> access_infos(zone()); 94 ZoneVector<PropertyAccessInfo> access_infos(zone());
95 if (!access_info_factory.ComputePropertyAccessInfos( 95 if (!access_info_factory.ComputePropertyAccessInfos(
96 receiver_maps, name, access_mode, &access_infos)) { 96 receiver_maps, name, access_mode, &access_infos)) {
97 return NoChange(); 97 return NoChange();
98 } 98 }
99 99
100 // Nothing to do if we have no non-deprecated maps. 100 // Nothing to do if we have no non-deprecated maps.
101 if (access_infos.empty()) return NoChange(); 101 if (access_infos.empty()) {
102 return ReduceSoftDeoptimize(
103 node, DeoptimizeReason::kInsufficientTypeFeedbackForGenericNamedAccess);
104 }
102 105
103 // The final states for every polymorphic branch. We join them with 106 // The final states for every polymorphic branch. We join them with
104 // Merge++Phi+EffectPhi at the bottom. 107 // Merge++Phi+EffectPhi at the bottom.
105 ZoneVector<Node*> values(zone()); 108 ZoneVector<Node*> values(zone());
106 ZoneVector<Node*> effects(zone()); 109 ZoneVector<Node*> effects(zone());
107 ZoneVector<Node*> controls(zone()); 110 ZoneVector<Node*> controls(zone());
108 111
109 // Ensure that {index} matches the specified {name} (if {index} is given). 112 // Ensure that {index} matches the specified {name} (if {index} is given).
110 if (index != nullptr) { 113 if (index != nullptr) {
111 Node* check = graph()->NewNode(simplified()->ReferenceEqual(Type::Name()), 114 Node* check = graph()->NewNode(simplified()->ReferenceEqual(Type::Name()),
(...skipping 398 matching lines...) Expand 10 before | Expand all | Expand 10 after
510 // Compute element access infos for the receiver maps. 513 // Compute element access infos for the receiver maps.
511 AccessInfoFactory access_info_factory(dependencies(), native_context, 514 AccessInfoFactory access_info_factory(dependencies(), native_context,
512 graph()->zone()); 515 graph()->zone());
513 ZoneVector<ElementAccessInfo> access_infos(zone()); 516 ZoneVector<ElementAccessInfo> access_infos(zone());
514 if (!access_info_factory.ComputeElementAccessInfos(receiver_maps, access_mode, 517 if (!access_info_factory.ComputeElementAccessInfos(receiver_maps, access_mode,
515 &access_infos)) { 518 &access_infos)) {
516 return NoChange(); 519 return NoChange();
517 } 520 }
518 521
519 // Nothing to do if we have no non-deprecated maps. 522 // Nothing to do if we have no non-deprecated maps.
520 if (access_infos.empty()) return NoChange(); 523 if (access_infos.empty()) {
524 return ReduceSoftDeoptimize(
525 node, DeoptimizeReason::kInsufficientTypeFeedbackForGenericKeyedAccess);
526 }
521 527
522 // The final states for every polymorphic branch. We join them with 528 // The final states for every polymorphic branch. We join them with
523 // Merge+Phi+EffectPhi at the bottom. 529 // Merge+Phi+EffectPhi at the bottom.
524 ZoneVector<Node*> values(zone()); 530 ZoneVector<Node*> values(zone());
525 ZoneVector<Node*> effects(zone()); 531 ZoneVector<Node*> effects(zone());
526 ZoneVector<Node*> controls(zone()); 532 ZoneVector<Node*> controls(zone());
527 533
528 // Ensure that {receiver} is a heap object. 534 // Ensure that {receiver} is a heap object.
529 receiver = effect = graph()->NewNode(simplified()->CheckTaggedPointer(), 535 receiver = effect = graph()->NewNode(simplified()->CheckTaggedPointer(),
530 receiver, effect, control); 536 receiver, effect, control);
(...skipping 508 matching lines...) Expand 10 before | Expand all | Expand 10 after
1039 } 1045 }
1040 1046
1041 1047
1042 SimplifiedOperatorBuilder* JSNativeContextSpecialization::simplified() const { 1048 SimplifiedOperatorBuilder* JSNativeContextSpecialization::simplified() const {
1043 return jsgraph()->simplified(); 1049 return jsgraph()->simplified();
1044 } 1050 }
1045 1051
1046 } // namespace compiler 1052 } // namespace compiler
1047 } // namespace internal 1053 } // namespace internal
1048 } // namespace v8 1054 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698