keyed-store-generic.h 1.88 KB
Newer Older
1 2 3 4
// 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.

5 6
#ifndef V8_IC_KEYED_STORE_GENERIC_H_
#define V8_IC_KEYED_STORE_GENERIC_H_
7

8
#include "src/common/globals.h"
9
#include "src/compiler/code-assembler.h"
10 11 12 13 14 15

namespace v8 {
namespace internal {

class KeyedStoreGenericGenerator {
 public:
16
  static void Generate(compiler::CodeAssemblerState* state);
17 18 19 20

  // Building block for fast path of Object.assign implementation.
  static void SetProperty(compiler::CodeAssemblerState* state,
                          TNode<Context> context, TNode<JSReceiver> receiver,
21 22
                          TNode<BoolT> is_simple_receiver, TNode<Name> name,
                          TNode<Object> value, LanguageMode language_mode);
23 24 25 26 27 28 29

  // 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);
30

31 32 33 34
  static void CreateDataProperty(compiler::CodeAssemblerState* state,
                                 TNode<Context> context,
                                 TNode<JSObject> receiver, TNode<Object> key,
                                 TNode<Object> value);
35 36
};

37
class DefineKeyedOwnGenericGenerator {
38 39 40 41
 public:
  static void Generate(compiler::CodeAssemblerState* state);
};

42
class StoreICNoFeedbackGenerator {
43
 public:
44
  static void Generate(compiler::CodeAssemblerState* state);
45 46
};

47
class DefineNamedOwnICNoFeedbackGenerator {
48 49 50 51
 public:
  static void Generate(compiler::CodeAssemblerState* state);
};

52 53 54
}  // namespace internal
}  // namespace v8

55
#endif  // V8_IC_KEYED_STORE_GENERIC_H_