| Index: src/code-stub-assembler.h
|
| diff --git a/src/code-stub-assembler.h b/src/code-stub-assembler.h
|
| index 25299b5503ca394048c02d3d3ea6f0333c854ccd..2bc78fffd91ef82f29a766a26992565569d11599 100644
|
| --- a/src/code-stub-assembler.h
|
| +++ b/src/code-stub-assembler.h
|
| @@ -631,7 +631,7 @@ class CodeStubAssembler : public compiler::CodeAssembler {
|
| compiler::Node* callable,
|
| compiler::Node* object);
|
|
|
| - // LoadIC helpers.
|
| + // Load/StoreIC helpers.
|
| struct LoadICParameters {
|
| LoadICParameters(compiler::Node* context, compiler::Node* receiver,
|
| compiler::Node* name, compiler::Node* slot,
|
| @@ -649,6 +649,15 @@ class CodeStubAssembler : public compiler::CodeAssembler {
|
| compiler::Node* vector;
|
| };
|
|
|
| + struct StoreICParameters : public LoadICParameters {
|
| + StoreICParameters(compiler::Node* context, compiler::Node* receiver,
|
| + compiler::Node* name, compiler::Node* value,
|
| + compiler::Node* slot, compiler::Node* vector)
|
| + : LoadICParameters(context, receiver, name, slot, vector),
|
| + value(value) {}
|
| + compiler::Node* value;
|
| + };
|
| +
|
| // Load type feedback vector from the stub caller's frame.
|
| compiler::Node* LoadTypeFeedbackVectorForStub();
|
|
|
| @@ -660,12 +669,12 @@ class CodeStubAssembler : public compiler::CodeAssembler {
|
| compiler::Node* LoadReceiverMap(compiler::Node* receiver);
|
|
|
| // Checks monomorphic case. Returns {feedback} entry of the vector.
|
| - compiler::Node* TryMonomorphicCase(const LoadICParameters* p,
|
| + compiler::Node* TryMonomorphicCase(compiler::Node* slot,
|
| + compiler::Node* vector,
|
| compiler::Node* receiver_map,
|
| Label* if_handler, Variable* var_handler,
|
| Label* if_miss);
|
| - void HandlePolymorphicCase(const LoadICParameters* p,
|
| - compiler::Node* receiver_map,
|
| + void HandlePolymorphicCase(compiler::Node* receiver_map,
|
| compiler::Node* feedback, Label* if_handler,
|
| Variable* var_handler, Label* if_miss,
|
| int unroll_count);
|
| @@ -746,6 +755,7 @@ class CodeStubAssembler : public compiler::CodeAssembler {
|
| void LoadGlobalIC(const LoadICParameters* p);
|
| void KeyedLoadIC(const LoadICParameters* p);
|
| void KeyedLoadICGeneric(const LoadICParameters* p);
|
| + void StoreIC(const StoreICParameters* p);
|
|
|
| void TransitionElementsKind(compiler::Node* object, compiler::Node* map,
|
| ElementsKind from_kind, ElementsKind to_kind,
|
|
|