構成 | ネームスペース | マクロ定義 | 関数 | 変数

src/heap.cc

#include "v8.h"
#include "accessors.h"
#include "api.h"
#include "bootstrapper.h"
#include "codegen-inl.h"
#include "compilation-cache.h"
#include "debug.h"
#include "global-handles.h"
#include "jsregexp.h"
#include "mark-compact.h"
#include "natives.h"
#include "scanner.h"
#include "scopeinfo.h"
#include "v8threads.h"

ソースコードを見る。

構成

class  v8::internal::ScavengeVisitor
class  v8::internal::UpdateRSetVisitor

ネームスペース

namespace  v8
namespace  v8::internal

マクロ定義

#define ROOT_ALLOCATION(type, name)   type* Heap::name##_;
#define STRUCT_ALLOCATION(NAME, Name, name)   Map* Heap::name##_map_;
#define SYMBOL_ALLOCATION(name, string)   String* Heap::name##_;
#define ALLOCATE_STRING_MAP(type, size, name)
#define ALLOCATE_STRUCT_MAP(NAME, Name, name)
#define SYMBOL_INITIALIZE(name, string)
#define MAKE_CASE(NAME, Name, name)   case NAME##_TYPE: map = name##_map(); break;
#define SYNCHRONIZE_TAG(tag)
#define ROOT_ITERATE(type, name)   v->VisitPointer(bit_cast<Object**, type**>(&name##_));
#define STRUCT_MAP_ITERATE(NAME, Name, name)   v->VisitPointer(bit_cast<Object**, Map**>(&name##_map_));
#define SYMBOL_ITERATE(name, string)   v->VisitPointer(bit_cast<Object**, String**>(&name##_));

関数

static bool v8::internal::IsShortcutCandidate (HeapObject *object, Map *map)
static int v8::internal::double_get_hash (double d)
static int v8::internal::smi_get_hash (Smi *smi)

変数

static const int v8::internal::kMinimumPromotionLimit = 2*MB
static const int v8::internal::kMinimumAllocationLimit = 8*MB
static Address v8::internal::promoted_top = NULL
static bool v8::internal::heap_configured = false

マクロ定義

#define ALLOCATE_STRING_MAP (   type,
  size,
  name 
)
値:
obj = AllocateMap(type, size);              \
    if (obj->IsFailure()) return false;         \
    name##_map_ = Map::cast(obj);

参照元 v8::internal::Heap::CreateInitialMaps().

#define ALLOCATE_STRUCT_MAP (   NAME,
  Name,
  name 
)
値:
obj = AllocateMap(NAME##_TYPE, Name::kSize);     \
  if (obj->IsFailure()) return false;              \
  name##_map_ = Map::cast(obj);

参照元 v8::internal::Heap::CreateInitialMaps().

#define MAKE_CASE (   NAME,
  Name,
  name 
)    case NAME##_TYPE: map = name##_map(); break;
#define ROOT_ALLOCATION (   type,
  name 
)    type* Heap::name##_;

heap.cc45 行で定義されています。

#define ROOT_ITERATE (   type,
  name 
)    v->VisitPointer(bit_cast<Object**, type**>(&name##_));
#define STRUCT_ALLOCATION (   NAME,
  Name,
  name 
)    Map* Heap::name##_map_;

heap.cc50 行で定義されています。

#define STRUCT_MAP_ITERATE (   NAME,
  Name,
  name 
)    v->VisitPointer(bit_cast<Object**, Map**>(&name##_map_));
#define SYMBOL_ALLOCATION (   name,
  string 
)    String* Heap::name##_;

heap.cc55 行で定義されています。

#define SYMBOL_INITIALIZE (   name,
  string 
)
値:
obj = LookupAsciiSymbol(string);                      \
  if (obj->IsFailure()) return false;                   \
  (name##_) = String::cast(obj);

参照元 v8::internal::Heap::CreateInitialObjects().

#define SYMBOL_ITERATE (   name,
  string 
)    v->VisitPointer(bit_cast<Object**, String**>(&name##_));
#define SYNCHRONIZE_TAG (   tag  ) 

heap.cc2512 行で定義されています。

参照元 v8::internal::Heap::IterateRoots(), と v8::internal::Heap::IterateStrongRoots().

 全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 フレンド マクロ定義