Index: src/compiler/js-native-context-specialization.cc |
diff --git a/src/compiler/js-native-context-specialization.cc b/src/compiler/js-native-context-specialization.cc |
index 89d16a7d0048135feb81b77304c3ea29bf570357..408a0166208018fd9d7ebd32b85aee2d614325a0 100644 |
--- a/src/compiler/js-native-context-specialization.cc |
+++ b/src/compiler/js-native-context-specialization.cc |
@@ -80,7 +80,6 @@ Reduction JSNativeContextSpecialization::ReduceNamedAccess( |
Node* receiver = NodeProperties::GetValueInput(node, 0); |
Node* effect = NodeProperties::GetEffectInput(node); |
Node* control = NodeProperties::GetControlInput(node); |
- Node* frame_state = NodeProperties::FindFrameStateBefore(node); |
// Not much we can do if deoptimization support is disabled. |
if (!(flags() & kDeoptimizationEnabled)) return NoChange(); |
@@ -111,8 +110,7 @@ Reduction JSNativeContextSpecialization::ReduceNamedAccess( |
if (index != nullptr) { |
Node* check = graph()->NewNode(simplified()->ReferenceEqual(Type::Name()), |
index, jsgraph()->HeapConstant(name)); |
- control = effect = graph()->NewNode(common()->DeoptimizeUnless(), check, |
- frame_state, effect, control); |
+ effect = graph()->NewNode(simplified()->CheckIf(), check, effect, control); |
} |
// Check if {receiver} may be a number. |
@@ -158,9 +156,9 @@ Reduction JSNativeContextSpecialization::ReduceNamedAccess( |
if (receiver_type->Is(Type::String())) { |
Node* check = graph()->NewNode(simplified()->ObjectIsString(), receiver); |
if (j == access_infos.size() - 1) { |
- this_control = this_effect = |
- graph()->NewNode(common()->DeoptimizeUnless(), check, frame_state, |
- this_effect, fallthrough_control); |
+ this_effect = graph()->NewNode(simplified()->CheckIf(), check, |
+ this_effect, fallthrough_control); |
+ this_control = fallthrough_control; |
fallthrough_control = nullptr; |
} else { |
Node* branch = |
@@ -181,11 +179,10 @@ Reduction JSNativeContextSpecialization::ReduceNamedAccess( |
graph()->NewNode(simplified()->ReferenceEqual(Type::Internal()), |
receiver_map, jsgraph()->Constant(map)); |
if (--num_classes == 0 && j == access_infos.size() - 1) { |
- Node* deoptimize = |
- graph()->NewNode(common()->DeoptimizeUnless(), check, frame_state, |
- this_effect, fallthrough_control); |
- this_controls.push_back(deoptimize); |
- this_effects.push_back(deoptimize); |
+ check = graph()->NewNode(simplified()->CheckIf(), check, this_effect, |
+ fallthrough_control); |
+ this_controls.push_back(fallthrough_control); |
+ this_effects.push_back(check); |
fallthrough_control = nullptr; |
} else { |
Node* branch = |
@@ -237,9 +234,8 @@ Reduction JSNativeContextSpecialization::ReduceNamedAccess( |
if (access_mode == AccessMode::kStore) { |
Node* check = graph()->NewNode( |
simplified()->ReferenceEqual(Type::Tagged()), value, this_value); |
- this_control = this_effect = |
- graph()->NewNode(common()->DeoptimizeUnless(), check, frame_state, |
- this_effect, this_control); |
+ this_effect = graph()->NewNode(simplified()->CheckIf(), check, |
+ this_effect, this_control); |
} |
} else { |
DCHECK(access_info.IsDataField()); |
@@ -331,9 +327,8 @@ Reduction JSNativeContextSpecialization::ReduceNamedAccess( |
Node* check = graph()->NewNode( |
simplified()->ReferenceEqual(Type::Internal()), this_value_map, |
jsgraph()->Constant(field_type->Classes().Current())); |
- this_control = this_effect = |
- graph()->NewNode(common()->DeoptimizeUnless(), check, |
- frame_state, this_effect, this_control); |
+ this_effect = graph()->NewNode(simplified()->CheckIf(), check, |
+ this_effect, this_control); |
} else { |
DCHECK_EQ(0, field_type->NumClasses()); |
} |
@@ -564,11 +559,10 @@ Reduction JSNativeContextSpecialization::ReduceElementAccess( |
// TODO(turbofan): This is ugly as hell! We should probably introduce |
// macro-ish operators for property access that encapsulate this whole |
// mess. |
- Node* deoptimize = |
- graph()->NewNode(common()->DeoptimizeUnless(), check, frame_state, |
- effect, fallthrough_control); |
- this_controls.push_back(deoptimize); |
- this_effects.push_back(deoptimize); |
+ check = graph()->NewNode(simplified()->CheckIf(), check, effect, |
+ fallthrough_control); |
+ this_controls.push_back(fallthrough_control); |
+ this_effects.push_back(check); |
fallthrough_control = nullptr; |
} else { |
Node* branch = |
@@ -593,9 +587,10 @@ Reduction JSNativeContextSpecialization::ReduceElementAccess( |
simplified()->ReferenceEqual(Type::Any()), receiver_map, |
jsgraph()->HeapConstant(transition_source)); |
if (--num_transitions == 0 && j == access_infos.size() - 1) { |
- transition_control = transition_effect = |
- graph()->NewNode(common()->DeoptimizeUnless(), check, frame_state, |
+ transition_effect = |
+ graph()->NewNode(simplified()->CheckIf(), check, |
transition_effect, fallthrough_control); |
+ transition_control = fallthrough_control; |
fallthrough_control = nullptr; |
} else { |
Node* branch = |
@@ -680,9 +675,8 @@ Reduction JSNativeContextSpecialization::ReduceElementAccess( |
Node* check = graph()->NewNode( |
simplified()->ReferenceEqual(Type::Any()), this_elements_map, |
jsgraph()->HeapConstant(factory()->fixed_array_map())); |
- this_control = this_effect = |
- graph()->NewNode(common()->DeoptimizeUnless(), check, frame_state, |
- this_effect, this_control); |
+ this_effect = graph()->NewNode(simplified()->CheckIf(), check, |
+ this_effect, this_control); |
} |
// Load the length of the {receiver}. |