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

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

Issue 1718483002: Revert of [turbofan] Connect ObjectIsNumber to effect and control chains. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@move-change-low
Patch Set: Created 4 years, 10 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 | « src/compiler/graph-reducer.cc ('k') | src/compiler/pipeline.cc » ('j') | 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 272 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 field_access.name = MaybeHandle<Name>(); 283 field_access.name = MaybeHandle<Name>();
284 } 284 }
285 field_access.machine_type = MachineType::Float64(); 285 field_access.machine_type = MachineType::Float64();
286 } 286 }
287 this_value = this_effect = 287 this_value = this_effect =
288 graph()->NewNode(simplified()->LoadField(field_access), 288 graph()->NewNode(simplified()->LoadField(field_access),
289 this_storage, this_effect, this_control); 289 this_storage, this_effect, this_control);
290 } else { 290 } else {
291 DCHECK_EQ(AccessMode::kStore, access_mode); 291 DCHECK_EQ(AccessMode::kStore, access_mode);
292 if (field_type->Is(Type::UntaggedFloat64())) { 292 if (field_type->Is(Type::UntaggedFloat64())) {
293 Node* check = this_control = this_effect = 293 Node* check =
294 graph()->NewNode(simplified()->ObjectIsNumber(), this_value, 294 graph()->NewNode(simplified()->ObjectIsNumber(), this_value);
295 this_effect, this_control);
296 Node* branch = graph()->NewNode(common()->Branch(BranchHint::kTrue), 295 Node* branch = graph()->NewNode(common()->Branch(BranchHint::kTrue),
297 check, this_control); 296 check, this_control);
298 exit_controls.push_back( 297 exit_controls.push_back(
299 graph()->NewNode(common()->IfFalse(), branch)); 298 graph()->NewNode(common()->IfFalse(), branch));
300 this_control = graph()->NewNode(common()->IfTrue(), branch); 299 this_control = graph()->NewNode(common()->IfTrue(), branch);
301 this_value = graph()->NewNode(common()->Guard(Type::Number()), 300 this_value = graph()->NewNode(common()->Guard(Type::Number()),
302 this_value, this_control); 301 this_value, this_control);
303 302
304 if (!field_index.is_inobject() || field_index.is_hidden_field() || 303 if (!field_index.is_inobject() || field_index.is_hidden_field() ||
305 !FLAG_unbox_double_fields) { 304 !FLAG_unbox_double_fields) {
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after
646 // Certain stores need a prototype chain check because shape changes 645 // Certain stores need a prototype chain check because shape changes
647 // could allow callbacks on elements in the prototype chain that are 646 // could allow callbacks on elements in the prototype chain that are
648 // not compatible with (monomorphic) keyed stores. 647 // not compatible with (monomorphic) keyed stores.
649 Handle<JSObject> holder; 648 Handle<JSObject> holder;
650 if (access_info.holder().ToHandle(&holder)) { 649 if (access_info.holder().ToHandle(&holder)) {
651 AssumePrototypesStable(receiver_type, native_context, holder); 650 AssumePrototypesStable(receiver_type, native_context, holder);
652 } 651 }
653 652
654 // Check that the {index} is actually a Number. 653 // Check that the {index} is actually a Number.
655 if (!NumberMatcher(this_index).HasValue()) { 654 if (!NumberMatcher(this_index).HasValue()) {
656 Node* check = this_control = this_effect = 655 Node* check =
657 graph()->NewNode(simplified()->ObjectIsNumber(), this_index, 656 graph()->NewNode(simplified()->ObjectIsNumber(), this_index);
658 this_effect, this_control);
659 Node* branch = graph()->NewNode(common()->Branch(BranchHint::kTrue), 657 Node* branch = graph()->NewNode(common()->Branch(BranchHint::kTrue),
660 check, this_control); 658 check, this_control);
661 exit_controls.push_back(graph()->NewNode(common()->IfFalse(), branch)); 659 exit_controls.push_back(graph()->NewNode(common()->IfFalse(), branch));
662 this_control = graph()->NewNode(common()->IfTrue(), branch); 660 this_control = graph()->NewNode(common()->IfTrue(), branch);
663 this_index = graph()->NewNode(common()->Guard(Type::Number()), this_index, 661 this_index = graph()->NewNode(common()->Guard(Type::Number()), this_index,
664 this_control); 662 this_control);
665 } 663 }
666 664
667 // Convert the {index} to an unsigned32 value and check if the result is 665 // Convert the {index} to an unsigned32 value and check if the result is
668 // equal to the original {index}. 666 // equal to the original {index}.
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
820 DCHECK_EQ(AccessMode::kStore, access_mode); 818 DCHECK_EQ(AccessMode::kStore, access_mode);
821 if (IsFastSmiElementsKind(elements_kind)) { 819 if (IsFastSmiElementsKind(elements_kind)) {
822 Node* check = graph()->NewNode(simplified()->ObjectIsSmi(), this_value); 820 Node* check = graph()->NewNode(simplified()->ObjectIsSmi(), this_value);
823 Node* branch = graph()->NewNode(common()->Branch(BranchHint::kTrue), 821 Node* branch = graph()->NewNode(common()->Branch(BranchHint::kTrue),
824 check, this_control); 822 check, this_control);
825 exit_controls.push_back(graph()->NewNode(common()->IfFalse(), branch)); 823 exit_controls.push_back(graph()->NewNode(common()->IfFalse(), branch));
826 this_control = graph()->NewNode(common()->IfTrue(), branch); 824 this_control = graph()->NewNode(common()->IfTrue(), branch);
827 this_value = graph()->NewNode(common()->Guard(type_cache_.kSmi), 825 this_value = graph()->NewNode(common()->Guard(type_cache_.kSmi),
828 this_value, this_control); 826 this_value, this_control);
829 } else if (IsFastDoubleElementsKind(elements_kind)) { 827 } else if (IsFastDoubleElementsKind(elements_kind)) {
830 Node* check = this_control = this_effect = 828 Node* check =
831 graph()->NewNode(simplified()->ObjectIsNumber(), this_value, 829 graph()->NewNode(simplified()->ObjectIsNumber(), this_value);
832 this_effect, this_control);
833 Node* branch = graph()->NewNode(common()->Branch(BranchHint::kTrue), 830 Node* branch = graph()->NewNode(common()->Branch(BranchHint::kTrue),
834 check, this_control); 831 check, this_control);
835 exit_controls.push_back(graph()->NewNode(common()->IfFalse(), branch)); 832 exit_controls.push_back(graph()->NewNode(common()->IfFalse(), branch));
836 this_control = graph()->NewNode(common()->IfTrue(), branch); 833 this_control = graph()->NewNode(common()->IfTrue(), branch);
837 this_value = graph()->NewNode(common()->Guard(Type::Number()), 834 this_value = graph()->NewNode(common()->Guard(Type::Number()),
838 this_value, this_control); 835 this_value, this_control);
839 } 836 }
840 this_effect = graph()->NewNode(simplified()->StoreElement(element_access), 837 this_effect = graph()->NewNode(simplified()->StoreElement(element_access),
841 this_elements, this_index, this_value, 838 this_elements, this_index, this_value,
842 this_effect, this_control); 839 this_effect, this_control);
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after
1046 } 1043 }
1047 1044
1048 1045
1049 SimplifiedOperatorBuilder* JSNativeContextSpecialization::simplified() const { 1046 SimplifiedOperatorBuilder* JSNativeContextSpecialization::simplified() const {
1050 return jsgraph()->simplified(); 1047 return jsgraph()->simplified();
1051 } 1048 }
1052 1049
1053 } // namespace compiler 1050 } // namespace compiler
1054 } // namespace internal 1051 } // namespace internal
1055 } // namespace v8 1052 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/graph-reducer.cc ('k') | src/compiler/pipeline.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698