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 842b002da7d68dca87c3df8f8f762ec214c5cc09..4103646c22615ad0e713c789c6f2f5525d9b8341 100644 |
--- a/src/compiler/js-native-context-specialization.cc |
+++ b/src/compiler/js-native-context-specialization.cc |
@@ -553,7 +553,7 @@ Reduction JSNativeContextSpecialization::ReduceJSStoreGlobal(Node* node) { |
Reduction JSNativeContextSpecialization::ReduceNamedAccess( |
Node* node, Node* value, MapHandleList const& receiver_maps, |
Handle<Name> name, AccessMode access_mode, LanguageMode language_mode, |
- Handle<FeedbackVector> vector, FeedbackSlot slot, Node* index) { |
+ Node* index) { |
DCHECK(node->opcode() == IrOpcode::kJSLoadNamed || |
node->opcode() == IrOpcode::kJSStoreNamed || |
node->opcode() == IrOpcode::kJSLoadProperty || |
@@ -599,13 +599,6 @@ Reduction JSNativeContextSpecialization::ReduceNamedAccess( |
if (is_exceptional || !(flags() & kAccessorInliningEnabled)) { |
return NoChange(); |
} |
- } else if (access_info.IsGeneric()) { |
- // We do not handle generic calls in try blocks. |
- if (is_exceptional) return NoChange(); |
- // We only handle the generic store IC case. |
- if (!vector->IsStoreIC(slot)) { |
- return NoChange(); |
- } |
} |
} |
@@ -644,7 +637,7 @@ Reduction JSNativeContextSpecialization::ReduceNamedAccess( |
// Generate the actual property access. |
ValueEffectControl continuation = BuildPropertyAccess( |
receiver, value, context, frame_state, effect, control, name, |
- access_info, access_mode, language_mode, vector, slot); |
+ access_info, access_mode, language_mode); |
value = continuation.value(); |
effect = continuation.effect(); |
control = continuation.control(); |
@@ -747,10 +740,9 @@ Reduction JSNativeContextSpecialization::ReduceNamedAccess( |
} |
// Generate the actual property access. |
- ValueEffectControl continuation = |
- BuildPropertyAccess(this_receiver, this_value, context, frame_state, |
- this_effect, this_control, name, access_info, |
- access_mode, language_mode, vector, slot); |
+ ValueEffectControl continuation = BuildPropertyAccess( |
+ this_receiver, this_value, context, frame_state, this_effect, |
+ this_control, name, access_info, access_mode, language_mode); |
values.push_back(continuation.value()); |
effects.push_back(continuation.effect()); |
controls.push_back(continuation.control()); |
@@ -823,7 +815,7 @@ Reduction JSNativeContextSpecialization::ReduceNamedAccessFromNexus( |
// Try to lower the named access based on the {receiver_maps}. |
return ReduceNamedAccess(node, value, receiver_maps, name, access_mode, |
- language_mode, nexus.vector_handle(), nexus.slot()); |
+ language_mode); |
} |
Reduction JSNativeContextSpecialization::ReduceJSLoadNamed(Node* node) { |
@@ -1225,17 +1217,16 @@ Reduction JSNativeContextSpecialization::ReduceKeyedAccess( |
} else { |
name = factory()->InternalizeName(name); |
return ReduceNamedAccess(node, value, receiver_maps, name, access_mode, |
- language_mode, nexus.vector_handle(), |
- nexus.slot()); |
+ language_mode); |
} |
} |
} |
// Check if we have feedback for a named access. |
if (Name* name = nexus.FindFirstName()) { |
- return ReduceNamedAccess( |
- node, value, receiver_maps, handle(name, isolate()), access_mode, |
- language_mode, nexus.vector_handle(), nexus.slot(), index); |
+ return ReduceNamedAccess(node, value, receiver_maps, |
+ handle(name, isolate()), access_mode, |
+ language_mode, index); |
} else if (nexus.GetKeyType() != ELEMENT) { |
// The KeyedLoad/StoreIC has seen non-element accesses, so we cannot assume |
// that the {index} is a valid array index, thus we just let the IC continue |
@@ -1309,8 +1300,7 @@ JSNativeContextSpecialization::ValueEffectControl |
JSNativeContextSpecialization::BuildPropertyAccess( |
Node* receiver, Node* value, Node* context, Node* frame_state, Node* effect, |
Node* control, Handle<Name> name, PropertyAccessInfo const& access_info, |
- AccessMode access_mode, LanguageMode language_mode, |
- Handle<FeedbackVector> vector, FeedbackSlot slot) { |
+ AccessMode access_mode, LanguageMode language_mode) { |
// Determine actual holder and perform prototype chain checks. |
Handle<JSObject> holder; |
if (access_info.holder().ToHandle(&holder)) { |
@@ -1411,7 +1401,8 @@ JSNativeContextSpecialization::BuildPropertyAccess( |
break; |
} |
} |
- } else if (access_info.IsDataField() || access_info.IsDataConstantField()) { |
+ } else { |
+ DCHECK(access_info.IsDataField() || access_info.IsDataConstantField()); |
FieldIndex const field_index = access_info.field_index(); |
Type* const field_type = access_info.field_type(); |
MachineRepresentation const field_representation = |
@@ -1661,28 +1652,6 @@ JSNativeContextSpecialization::BuildPropertyAccess( |
storage, value, effect, control); |
} |
} |
- } else { |
- DCHECK(access_info.IsGeneric()); |
- DCHECK_EQ(AccessMode::kStore, access_mode); |
- DCHECK(vector->IsStoreIC(slot)); |
- DCHECK_EQ(vector->GetLanguageMode(slot), language_mode); |
- Callable callable = |
- CodeFactory::StoreICInOptimizedCode(isolate(), language_mode); |
- const CallInterfaceDescriptor& descriptor = callable.descriptor(); |
- CallDescriptor* desc = Linkage::GetStubCallDescriptor( |
- isolate(), graph()->zone(), descriptor, |
- descriptor.GetStackParameterCount(), CallDescriptor::kNeedsFrameState, |
- Operator::kNoProperties); |
- Node* stub_code = jsgraph()->HeapConstant(callable.code()); |
- Node* name_node = jsgraph()->HeapConstant(name); |
- Node* slot_node = jsgraph()->Constant(vector->GetIndex(slot)); |
- Node* vector_node = jsgraph()->HeapConstant(vector); |
- |
- Node* inputs[] = {stub_code, receiver, name_node, value, slot_node, |
- vector_node, context, frame_state, effect, control}; |
- |
- value = effect = control = |
- graph()->NewNode(common()->Call(desc), arraysize(inputs), inputs); |
} |
return ValueEffectControl(value, effect, control); |
@@ -1727,10 +1696,6 @@ Reduction JSNativeContextSpecialization::ReduceJSStoreDataPropertyInLiteral( |
return NoChange(); |
} |
- if (access_info.IsGeneric()) { |
- return NoChange(); |
- } |
- |
Node* receiver = NodeProperties::GetValueInput(node, 0); |
Node* effect = NodeProperties::GetEffectInput(node); |
Node* control = NodeProperties::GetControlInput(node); |
@@ -1754,8 +1719,7 @@ Reduction JSNativeContextSpecialization::ReduceJSStoreDataPropertyInLiteral( |
// Generate the actual property access. |
ValueEffectControl continuation = BuildPropertyAccess( |
receiver, value, context, frame_state_lazy, effect, control, cached_name, |
- access_info, AccessMode::kStoreInLiteral, LanguageMode::SLOPPY, |
- p.feedback().vector(), p.feedback().slot()); |
+ access_info, AccessMode::kStoreInLiteral, LanguageMode::SLOPPY); |
value = continuation.value(); |
effect = continuation.effect(); |
control = continuation.control(); |