NewtGC.c

ガベージコレクション [詳細]

#include <string.h>
#include "NewtGC.h"
#include "NewtObj.h"
#include "NewtMem.h"
#include "NewtEnv.h"
#include "NewtVM.h"
#include "NewtIO.h"
#include "NewtPrint.h"

ソースコードを見る。

関数

static void NewtPoolSnap (const char *title, newtPool pool, int32_t usesize)
static void NewtObjChain (newtObjRef *objp, newtObjRef obj)
static void NewtPoolChain (newtPool pool, newtObjRef obj, bool literal)
static void NewtObjFree (newtPool pool, newtObjRef obj)
static void NewtObjChainFree (newtPool pool, newtObjRef *objp)
static void NewtPoolSweep (newtPool pool, bool mark)
static void NewtGCRefMark (newtRefArg r, bool mark)
static void NewtGCRegMark (vm_reg_t *reg, bool mark)
static void NewtGCStackMark (vm_env_t *env, bool mark)
static void NewtGCMark (vm_env_t *env, bool mark)
void NewtCheckGC (newtPool pool, size_t size)
newtObjRef NewtObjChainAlloc (newtPool pool, size_t size, size_t dataSize)
void NewtPoolRelease (newtPool pool)
void NewtGC (void)
newtRef NsGC (newtRefArg rcvr)


説明

ガベージコレクション

作者:
M.Nukui
日付:
2003-11-07
Copyright (C) 2003-2004 M.Nukui All rights reserved.

NewtGC.c で定義されています。


関数

void NewtCheckGC ( newtPool  pool,
size_t  size 
)

GCが必要かチェックする

引数:
pool [in] メモリプール
size [in] 追加サイズ
戻り値:
なし

NewtGC.c124 行で定義されています。

参照先 newtpool_t::maxspaceNEWT_NEEDGCnewtpool_t::usesize.

参照元 NewtObjChainAlloc()NewtObjRealloc().

void NewtGC ( void   ) 

ガベージコレクションの実行

戻り値:
なし

NewtGC.c506 行で定義されています。

参照先 NEWT_NEEDGCNEWT_POOLNEWT_SWEEPNewtGCMark()NewtPoolSweep()vm_env.

参照元 NVMInterpret()NVMLoop().

関数の呼び出しグラフ:

void NewtGCMark ( vm_env_t env,
bool  mark 
) [static]

参照されているオブジェクトをマークする

引数:
env [in] 実行環境
mark [in] マークフラグ
戻り値:
なし

NewtGC.c485 行で定義されています。

参照先 NcGetRootNewtGCRefMark()NewtGCRegMark()NewtGCStackMark()vm_env_t::reg.

参照元 NewtGC().

関数の呼び出しグラフ:

void NewtGCRefMark ( newtRefArg  r,
bool  mark 
) [static]

オブジェクトをマークする

引数:
r [in] オブジェクト
mark [in] マークフラグ
戻り値:
なし

NewtGC.c370 行で定義されています。

参照先 newtObjHeader::hnewtObj::headerkNewtObjSweepNewtObjIsFrameNewtObjIsLiteralNewtObjIsSlottedNewtObjIsSweepNewtObjSlotsLength()NewtObjToSlotsNewtRefIsPointerNewtRefToPointer.

参照元 NewtGCMark()NewtGCRegMark()NewtGCStackMark().

関数の呼び出しグラフ:

void NewtGCRegMark ( vm_reg_t reg,
bool  mark 
) [static]

レジスタ内のオブジェクトをマークする

引数:
reg [in] レジスタ
mark [in] マークフラグ
戻り値:
なし

NewtGC.c416 行で定義されています。

参照先 vm_reg_t::funcvm_reg_t::implvm_reg_t::localsNewtGCRefMark()vm_reg_t::rcvr.

参照元 NewtGCMark()NewtGCStackMark().

関数の呼び出しグラフ:

void NewtGCStackMark ( vm_env_t env,
bool  mark 
) [static]

スタック内のオブジェクトをマークする

引数:
env [in] 実行環境
mark [in] マークフラグ
戻り値:
なし

NewtGC.c434 行で定義されています。

参照先 vm_env_t::callstackvm_env_t::currexcpNewtGCRefMark()NewtGCRegMark()vm_env_t::regnewtStack::spvm_reg_t::spvm_env_t::stacknewtStack::stackp.

参照元 NewtGCMark().

関数の呼び出しグラフ:

void NewtObjChain ( newtObjRef objp,
newtObjRef  obj 
) [static]

オブジェクトデータをチェインする

引数:
objp [in] チェインされるオブジェクトデータへのポインタ
obj [in] チェインするオブジェクトデータ
戻り値:
なし
覚え書き:
objp の参照先が NULL の場合は obj をセットして返す

NewtGC.c79 行で定義されています。

参照先 newtObj::headernewtObjHeader::nextp.

参照元 NewtPoolChain()NewtPoolSweep().

newtObjRef NewtObjChainAlloc ( newtPool  pool,
size_t  size,
size_t  dataSize 
)

メモリプール内でオブジェクトメモリを確保してチェインする

引数:
pool [in] メモリプール
size [in] オブジェクトサイズ
dataSize [in] データサイズ
戻り値:
オブジェクトデータ

NewtGC.c143 行で定義されています。

参照先 newtObjHeader::hnewtObj::headerkNewtObjLiteralNewtCheckGC()NewtMemAlloc()NewtMemFree()NewtPoolChain().

参照元 NewtObjMemAlloc().

関数の呼び出しグラフ:

void NewtObjChainFree ( newtPool  pool,
newtObjRef objp 
) [static]

オブジェクトデータにチェインされている全てのオブジェクトデータを解放する

引数:
pool [in] メモリプール
objp [i/o]オブジェクトデータへのポインタ
戻り値:
なし

NewtGC.c225 行で定義されています。

参照先 newtObj::headerNewtObjFree()newtObjHeader::nextp.

参照元 NewtPoolRelease().

関数の呼び出しグラフ:

void NewtObjFree ( newtPool  pool,
newtObjRef  obj 
) [static]

オブジェクトを解放する

引数:
pool [in] メモリプール
obj [in] オブジェクト
戻り値:
なし

NewtGC.c193 行で定義されています。

参照先 NewtAlign()NewtMemFree()NewtObjCalcDataSize()NewtObjData()NewtObjIsLiteralNewtObjSizenewtpool_t::usesize.

参照元 NewtObjChainFree()NewtPoolSweep().

関数の呼び出しグラフ:

void NewtPoolChain ( newtPool  pool,
newtObjRef  obj,
bool  literal 
) [static]

メモリプール内でオブジェクトデータをチェインする

引数:
pool [in] メモリプール
obj [in] チェインするオブジェクトデータ
literal [in] リテラルかどうか
戻り値:
なし

NewtGC.c103 行で定義されています。

参照先 newtpool_t::literalNewtObjChain()newtpool_t::obj.

参照元 NewtObjChainAlloc().

関数の呼び出しグラフ:

void NewtPoolRelease ( newtPool  pool  ) 

メモリプールの解放

引数:
pool [in] メモリプール
戻り値:
なし

NewtGC.c248 行で定義されています。

参照先 newtpool_t::literalNEWT_DEBUGNewtObjChainFree()NewtPoolSnap()newtpool_t::objnewtpool_t::usesize.

参照元 NewtCleanup().

関数の呼び出しグラフ:

void NewtPoolSnap ( const char *  title,
newtPool  pool,
int32_t  usesize 
) [static]

メモリプールのスナップショットを出力する

引数:
title [in] タイトル
pool [in] メモリプール
usesize [in] GC前の使用サイズ
戻り値:
なし

NewtGC.c61 行で定義されています。

参照先 NewtDebugMsg()newtpool_t::usesize.

参照元 NewtPoolRelease()NewtPoolSweep().

関数の呼び出しグラフ:

void NewtPoolSweep ( newtPool  pool,
bool  mark 
) [static]

メモリプール内のオブジェクトをスウィープ(掃除)する

引数:
pool [in] メモリプール
mark [in] マークフラグ
戻り値:
なし

NewtGC.c315 行で定義されています。

参照先 newtpool_t::expandspacenewtObj::headernewtpool_t::literalnewtpool_t::maxspaceNEWT_DEBUGNewtObjChain()NewtObjFree()NewtObjIsLiteralNewtObjIsSweepNewtPoolSnap()newtObjHeader::nextpnewtpool_t::objnewtpool_t::usesize.

参照元 NewtGC().

関数の呼び出しグラフ:

newtRef NsGC ( newtRefArg  rcvr  ) 

スクリプトから GC を呼出す(実際には GC を予約するだけ)

引数:
rcvr [in] レシーバ
戻り値:
NIL
覚え書き:
スクリプトからの呼出し用

NewtGC.c528 行で定義されています。

参照先 kNewtRefNILNEWT_NEEDGC.

参照元 NVMInitGlobalFns1().


NEWT/0に対してThu Nov 23 17:02:08 2006に生成されました。  doxygen 1.5.0