chromium/v8/src/ic/ic.h

// Copyright 2012 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_IC_H_
#define V8_IC_IC_H_

#include <vector>

#include "src/common/message-template.h"
#include "src/execution/isolate.h"
#include "src/heap/factory.h"
#include "src/ic/stub-cache.h"
#include "src/objects/feedback-vector.h"
#include "src/objects/map.h"
#include "src/objects/maybe-object.h"
#include "src/objects/smi.h"

namespace v8 {
namespace internal {

enum class NamedPropertyType : bool {};

//
// IC is the base class for LoadIC, StoreIC, KeyedLoadIC, and KeyedStoreIC.
//
class IC {};

class LoadIC : public IC {};

class LoadGlobalIC : public LoadIC {};

class KeyedLoadIC : public LoadIC {};

class StoreIC : public IC {};

class StoreGlobalIC : public StoreIC {};

enum KeyedStoreCheckMap {};

enum KeyedStoreIncrementLength {};

enum class TransitionMode {};

class KeyedStoreIC : public StoreIC {};

class StoreInArrayLiteralIC : public KeyedStoreIC {};

}  // namespace internal
}  // namespace v8

#endif  // V8_IC_IC_H_