blob: 9ab8db78646bf736c11fb884682bdb3cfaf692a1 [file] [log] [blame]
// 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.
#include "src/compiler/code-assembler.h"
#include "src/globals.h"
namespace v8 {
namespace internal {
class KeyedStoreGenericGenerator {
template <class T>
using TNode = compiler::TNode<T>;
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 StoreICUninitializedGenerator {
static void Generate(compiler::CodeAssemblerState* state);
} // namespace internal
} // namespace v8