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) { ...@@ -409,7 +409,8 @@ void JSGenericLowering::LowerJSStoreGlobal(Node* node) {
ReplaceWithStubCall(node, callable, flags); ReplaceWithStubCall(node, callable, flags);
} else { } else {
Callable callable = CodeFactory::StoreIC(isolate(), p.language_mode()); Callable callable = CodeFactory::StoreICInOptimizedCode(
isolate(), p.language_mode(), UNINITIALIZED);
node->RemoveInput(0); // script context node->RemoveInput(0); // script context
node->InsertInput(zone(), 1, jsgraph()->HeapConstant(p.name())); node->InsertInput(zone(), 1, jsgraph()->HeapConstant(p.name()));
if (FLAG_vector_stores) { if (FLAG_vector_stores) {
......
This diff is collapsed.
...@@ -2453,20 +2453,16 @@ class HOptimizedGraphBuilder : public HGraphBuilder, public AstVisitor { ...@@ -2453,20 +2453,16 @@ class HOptimizedGraphBuilder : public HGraphBuilder, public AstVisitor {
Handle<JSFunction> caller, Handle<JSFunction> caller,
const char* failure_reason); const char* failure_reason);
void HandleGlobalVariableAssignment(Variable* var, void HandleGlobalVariableAssignment(Variable* var, HValue* value,
HValue* value, FeedbackVectorICSlot ic_slot,
BailoutId ast_id); BailoutId ast_id);
void HandlePropertyAssignment(Assignment* expr); void HandlePropertyAssignment(Assignment* expr);
void HandleCompoundAssignment(Assignment* expr); void HandleCompoundAssignment(Assignment* expr);
void HandlePolymorphicNamedFieldAccess(PropertyAccessType access_type, void HandlePolymorphicNamedFieldAccess(
Expression* expr, PropertyAccessType access_type, Expression* expr,
BailoutId ast_id, FeedbackVectorICSlot slot, BailoutId ast_id, BailoutId return_id,
BailoutId return_id, HValue* object, HValue* value, SmallMapList* types, Handle<String> name);
HValue* object,
HValue* value,
SmallMapList* types,
Handle<String> name);
HValue* BuildAllocateExternalElements( HValue* BuildAllocateExternalElements(
ExternalArrayType array_type, ExternalArrayType array_type,
...@@ -2715,7 +2711,8 @@ class HOptimizedGraphBuilder : public HGraphBuilder, public AstVisitor { ...@@ -2715,7 +2711,8 @@ class HOptimizedGraphBuilder : public HGraphBuilder, public AstVisitor {
HValue* BuildNamedAccess(PropertyAccessType access, BailoutId ast_id, HValue* BuildNamedAccess(PropertyAccessType access, BailoutId ast_id,
BailoutId reutrn_id, Expression* expr, 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); bool is_uninitialized = false);
void HandlePolymorphicCallNamed(Call* expr, void HandlePolymorphicCallNamed(Call* expr,
...@@ -2751,10 +2748,8 @@ class HOptimizedGraphBuilder : public HGraphBuilder, public AstVisitor { ...@@ -2751,10 +2748,8 @@ class HOptimizedGraphBuilder : public HGraphBuilder, public AstVisitor {
HInstruction* BuildIncrement(bool returns_original_input, HInstruction* BuildIncrement(bool returns_original_input,
CountOperation* expr); CountOperation* expr);
HInstruction* BuildKeyedGeneric(PropertyAccessType access_type, HInstruction* BuildKeyedGeneric(PropertyAccessType access_type,
Expression* expr, Expression* expr, FeedbackVectorICSlot slot,
HValue* object, HValue* object, HValue* key, HValue* value);
HValue* key,
HValue* value);
HInstruction* TryBuildConsolidatedElementLoad(HValue* object, HInstruction* TryBuildConsolidatedElementLoad(HValue* object,
HValue* key, HValue* key,
...@@ -2771,24 +2766,21 @@ class HOptimizedGraphBuilder : public HGraphBuilder, public AstVisitor { ...@@ -2771,24 +2766,21 @@ class HOptimizedGraphBuilder : public HGraphBuilder, public AstVisitor {
PropertyAccessType access_type, PropertyAccessType access_type,
KeyedAccessStoreMode store_mode); KeyedAccessStoreMode store_mode);
HValue* HandlePolymorphicElementAccess(Expression* expr, HValue* HandlePolymorphicElementAccess(
HValue* object, Expression* expr, FeedbackVectorICSlot slot, HValue* object, HValue* key,
HValue* key, HValue* val, SmallMapList* maps, PropertyAccessType access_type,
HValue* val, KeyedAccessStoreMode store_mode, bool* has_side_effects);
SmallMapList* maps,
PropertyAccessType access_type,
KeyedAccessStoreMode store_mode,
bool* has_side_effects);
HValue* HandleKeyedElementAccess(HValue* obj, HValue* key, HValue* val, HValue* HandleKeyedElementAccess(HValue* obj, HValue* key, HValue* val,
Expression* expr, BailoutId ast_id, Expression* expr, FeedbackVectorICSlot slot,
BailoutId return_id, BailoutId ast_id, BailoutId return_id,
PropertyAccessType access_type, PropertyAccessType access_type,
bool* has_side_effects); bool* has_side_effects);
HInstruction* BuildNamedGeneric(PropertyAccessType access, Expression* expr, HInstruction* BuildNamedGeneric(PropertyAccessType access, Expression* expr,
HValue* object, Handle<String> name, FeedbackVectorICSlot slot, HValue* object,
HValue* value, bool is_uninitialized = false); Handle<Name> name, HValue* value,
bool is_uninitialized = false);
HCheckMaps* AddCheckMap(HValue* object, Handle<Map> map); HCheckMaps* AddCheckMap(HValue* object, Handle<Map> map);
...@@ -2798,19 +2790,14 @@ class HOptimizedGraphBuilder : public HGraphBuilder, public AstVisitor { ...@@ -2798,19 +2790,14 @@ class HOptimizedGraphBuilder : public HGraphBuilder, public AstVisitor {
HValue* object, HValue* object,
HValue* key); HValue* key);
void BuildStoreForEffect(Expression* expression, void BuildStoreForEffect(Expression* expression, Property* prop,
Property* prop, FeedbackVectorICSlot slot, BailoutId ast_id,
BailoutId ast_id, BailoutId return_id, HValue* object, HValue* key,
BailoutId return_id,
HValue* object,
HValue* key,
HValue* value); HValue* value);
void BuildStore(Expression* expression, void BuildStore(Expression* expression, Property* prop,
Property* prop, FeedbackVectorICSlot slot, BailoutId ast_id,
BailoutId ast_id, BailoutId return_id, bool is_uninitialized = false);
BailoutId return_id,
bool is_uninitialized = false);
HInstruction* BuildLoadNamedField(PropertyAccessInfo* info, HInstruction* BuildLoadNamedField(PropertyAccessInfo* info,
HValue* checked_object); 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