| // Copyright 2016 the V8 project authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef V8_IC_KEYED_STORE_GENERIC_H_ |
| #define V8_IC_KEYED_STORE_GENERIC_H_ |
| |
| #include "src/common/globals.h" |
| #include "src/compiler/code-assembler.h" |
| |
| namespace v8 { |
| namespace internal { |
| |
| class KeyedStoreGenericGenerator { |
| public: |
| static void Generate(compiler::CodeAssemblerState* state); |
| |
| // Building block for fast path of Object.assign implementation. |
| static void SetProperty(compiler::CodeAssemblerState* state, |
| TNode<Context> context, TNode<JSReceiver> receiver, |
| TNode<BoolT> is_simple_receiver, TNode<Name> name, |
| TNode<Object> value, LanguageMode language_mode); |
| |
| // Same as above but more generic. I.e. the receiver can by anything and the |
| // key does not have to be unique. Essentially the same as KeyedStoreGeneric. |
| static void SetProperty(compiler::CodeAssemblerState* state, |
| TNode<Context> context, TNode<Object> receiver, |
| TNode<Object> key, TNode<Object> value, |
| LanguageMode language_mode); |
| |
| static void SetPropertyInLiteral(compiler::CodeAssemblerState* state, |
| TNode<Context> context, |
| TNode<JSObject> receiver, TNode<Object> key, |
| TNode<Object> value); |
| }; |
| |
| class StoreICNoFeedbackGenerator { |
| public: |
| static void Generate(compiler::CodeAssemblerState* state); |
| }; |
| |
| } // namespace internal |
| } // namespace v8 |
| |
| #endif // V8_IC_KEYED_STORE_GENERIC_H_ |