Commit f8a4afa7 authored by mvstanton's avatar mvstanton Committed by Commit bot

VectorICs: Crankshaft adaptations to deal with vector store ics.

Also, a one line fix in TurboFan to call the correct store ic.

BUG=

Review URL: https://codereview.chromium.org/1266983002

Cr-Commit-Position: refs/heads/master@{#29952}
parent 1667c15e
......@@ -409,7 +409,8 @@ void JSGenericLowering::LowerJSStoreGlobal(Node* node) {
ReplaceWithStubCall(node, callable, flags);
} else {
Callable callable = CodeFactory::StoreIC(isolate(), p.language_mode());
Callable callable = CodeFactory::StoreICInOptimizedCode(
isolate(), p.language_mode(), UNINITIALIZED);
node->RemoveInput(0); // script context
node->InsertInput(zone(), 1, jsgraph()->HeapConstant(p.name()));
if (FLAG_vector_stores) {
......
This diff is collapsed.
......@@ -2453,20 +2453,16 @@ class HOptimizedGraphBuilder : public HGraphBuilder, public AstVisitor {
Handle<JSFunction> caller,
const char* failure_reason);
void HandleGlobalVariableAssignment(Variable* var,
HValue* value,
void HandleGlobalVariableAssignment(Variable* var, HValue* value,
FeedbackVectorICSlot ic_slot,
BailoutId ast_id);
void HandlePropertyAssignment(Assignment* expr);
void HandleCompoundAssignment(Assignment* expr);
void HandlePolymorphicNamedFieldAccess(PropertyAccessType access_type,
Expression* expr,
BailoutId ast_id,
BailoutId return_id,
HValue* object,
HValue* value,
SmallMapList* types,
Handle<String> name);
void HandlePolymorphicNamedFieldAccess(
PropertyAccessType access_type, Expression* expr,
FeedbackVectorICSlot slot, BailoutId ast_id, BailoutId return_id,
HValue* object, HValue* value, SmallMapList* types, Handle<String> name);
HValue* BuildAllocateExternalElements(
ExternalArrayType array_type,
......@@ -2715,7 +2711,8 @@ class HOptimizedGraphBuilder : public HGraphBuilder, public AstVisitor {
HValue* BuildNamedAccess(PropertyAccessType access, BailoutId ast_id,
BailoutId reutrn_id, Expression* expr,
HValue* object, Handle<String> name, HValue* value,
FeedbackVectorICSlot slot, HValue* object,
Handle<String> name, HValue* value,
bool is_uninitialized = false);
void HandlePolymorphicCallNamed(Call* expr,
......@@ -2751,10 +2748,8 @@ class HOptimizedGraphBuilder : public HGraphBuilder, public AstVisitor {
HInstruction* BuildIncrement(bool returns_original_input,
CountOperation* expr);
HInstruction* BuildKeyedGeneric(PropertyAccessType access_type,
Expression* expr,
HValue* object,
HValue* key,
HValue* value);
Expression* expr, FeedbackVectorICSlot slot,
HValue* object, HValue* key, HValue* value);
HInstruction* TryBuildConsolidatedElementLoad(HValue* object,
HValue* key,
......@@ -2771,24 +2766,21 @@ class HOptimizedGraphBuilder : public HGraphBuilder, public AstVisitor {
PropertyAccessType access_type,
KeyedAccessStoreMode store_mode);
HValue* HandlePolymorphicElementAccess(Expression* expr,
HValue* object,
HValue* key,
HValue* val,
SmallMapList* maps,
PropertyAccessType access_type,
KeyedAccessStoreMode store_mode,
bool* has_side_effects);
HValue* HandlePolymorphicElementAccess(
Expression* expr, FeedbackVectorICSlot slot, HValue* object, HValue* key,
HValue* val, SmallMapList* maps, PropertyAccessType access_type,
KeyedAccessStoreMode store_mode, bool* has_side_effects);
HValue* HandleKeyedElementAccess(HValue* obj, HValue* key, HValue* val,
Expression* expr, BailoutId ast_id,
BailoutId return_id,
Expression* expr, FeedbackVectorICSlot slot,
BailoutId ast_id, BailoutId return_id,
PropertyAccessType access_type,
bool* has_side_effects);
HInstruction* BuildNamedGeneric(PropertyAccessType access, Expression* expr,
HValue* object, Handle<String> name,
HValue* value, bool is_uninitialized = false);
FeedbackVectorICSlot slot, HValue* object,
Handle<Name> name, HValue* value,
bool is_uninitialized = false);
HCheckMaps* AddCheckMap(HValue* object, Handle<Map> map);
......@@ -2798,19 +2790,14 @@ class HOptimizedGraphBuilder : public HGraphBuilder, public AstVisitor {
HValue* object,
HValue* key);
void BuildStoreForEffect(Expression* expression,
Property* prop,
BailoutId ast_id,
BailoutId return_id,
HValue* object,
HValue* key,
void BuildStoreForEffect(Expression* expression, Property* prop,
FeedbackVectorICSlot slot, BailoutId ast_id,
BailoutId return_id, HValue* object, HValue* key,
HValue* value);
void BuildStore(Expression* expression,
Property* prop,
BailoutId ast_id,
BailoutId return_id,
bool is_uninitialized = false);
void BuildStore(Expression* expression, Property* prop,
FeedbackVectorICSlot slot, BailoutId ast_id,
BailoutId return_id, bool is_uninitialized = false);
HInstruction* BuildLoadNamedField(PropertyAccessInfo* info,
HValue* checked_object);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment