V8 API Reference, 7.2.502.16 (for Deno 0.2.4)
keyed-store-generic.h
1 // Copyright 2016 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef V8_IC_KEYED_STORE_GENERIC_H_
6 #define V8_IC_KEYED_STORE_GENERIC_H_
7 
8 #include "src/compiler/code-assembler.h"
9 #include "src/globals.h"
10 
11 namespace v8 {
12 namespace internal {
13 
15  public:
16  template <class T>
17  using TNode = compiler::TNode<T>;
18 
19  static void Generate(compiler::CodeAssemblerState* state);
20 
21  // Building block for fast path of Object.assign implementation.
22  static void SetProperty(compiler::CodeAssemblerState* state,
23  TNode<Context> context, TNode<JSReceiver> receiver,
24  TNode<BoolT> is_simple_receiver, TNode<Name> name,
25  TNode<Object> value, LanguageMode language_mode);
26 
27  // Same as above but more generic. I.e. the receiver can by anything and the
28  // key does not have to be unique. Essentially the same as KeyedStoreGeneric.
29  static void SetProperty(compiler::CodeAssemblerState* state,
30  TNode<Context> context, TNode<Object> receiver,
31  TNode<Object> key, TNode<Object> value,
32  LanguageMode language_mode);
33 
34  static void SetPropertyInLiteral(compiler::CodeAssemblerState* state,
35  TNode<Context> context,
36  TNode<JSObject> receiver, TNode<Object> key,
37  TNode<Object> value);
38 };
39 
41  public:
42  static void Generate(compiler::CodeAssemblerState* state);
43 };
44 
45 } // namespace internal
46 } // namespace v8
47 
48 #endif // V8_IC_KEYED_STORE_GENERIC_H_
Definition: libplatform.h:13