#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) |
NewtGC.c で定義されています。
| void NewtCheckGC | ( | newtPool | pool, | |
| size_t | size | |||
| ) |
GCが必要かチェックする
| pool | [in] メモリプール | |
| size | [in] 追加サイズ |
| void NewtGC | ( | void | ) |
ガベージコレクションの実行
参照先 NEWT_NEEDGC・NEWT_POOL・NEWT_SWEEP・NewtGCMark()・NewtPoolSweep()・vm_env.
参照元 NVMInterpret()・NVMLoop().
関数の呼び出しグラフ:

| void NewtGCMark | ( | vm_env_t * | env, | |
| bool | mark | |||
| ) | [static] |
参照されているオブジェクトをマークする
| env | [in] 実行環境 | |
| mark | [in] マークフラグ |
参照先 NcGetRoot・NewtGCRefMark()・NewtGCRegMark()・NewtGCStackMark()・vm_env_t::reg.
参照元 NewtGC().
関数の呼び出しグラフ:

| void NewtGCRefMark | ( | newtRefArg | r, | |
| bool | mark | |||
| ) | [static] |
オブジェクトをマークする
| r | [in] オブジェクト | |
| mark | [in] マークフラグ |
参照先 newtObjHeader::h・newtObj::header・kNewtObjSweep・NewtObjIsFrame・NewtObjIsLiteral・NewtObjIsSlotted・NewtObjIsSweep・NewtObjSlotsLength()・NewtObjToSlots・NewtRefIsPointer・NewtRefToPointer.
参照元 NewtGCMark()・NewtGCRegMark()・NewtGCStackMark().
関数の呼び出しグラフ:

| void NewtGCRegMark | ( | vm_reg_t * | reg, | |
| bool | mark | |||
| ) | [static] |
レジスタ内のオブジェクトをマークする
| reg | [in] レジスタ | |
| mark | [in] マークフラグ |
参照先 vm_reg_t::func・vm_reg_t::impl・vm_reg_t::locals・NewtGCRefMark()・vm_reg_t::rcvr.
参照元 NewtGCMark()・NewtGCStackMark().
関数の呼び出しグラフ:

| void NewtGCStackMark | ( | vm_env_t * | env, | |
| bool | mark | |||
| ) | [static] |
スタック内のオブジェクトをマークする
| env | [in] 実行環境 | |
| mark | [in] マークフラグ |
参照先 vm_env_t::callstack・vm_env_t::currexcp・NewtGCRefMark()・NewtGCRegMark()・vm_env_t::reg・newtStack::sp・vm_reg_t::sp・vm_env_t::stack・newtStack::stackp.
参照元 NewtGCMark().
関数の呼び出しグラフ:

| void NewtObjChain | ( | newtObjRef * | objp, | |
| newtObjRef | obj | |||
| ) | [static] |
オブジェクトデータをチェインする
| objp | [in] チェインされるオブジェクトデータへのポインタ | |
| obj | [in] チェインするオブジェクトデータ |
| newtObjRef NewtObjChainAlloc | ( | newtPool | pool, | |
| size_t | size, | |||
| size_t | dataSize | |||
| ) |
メモリプール内でオブジェクトメモリを確保してチェインする
| pool | [in] メモリプール | |
| size | [in] オブジェクトサイズ | |
| dataSize | [in] データサイズ |
参照先 newtObjHeader::h・newtObj::header・kNewtObjLiteral・NewtCheckGC()・NewtMemAlloc()・NewtMemFree()・NewtPoolChain().
参照元 NewtObjMemAlloc().
関数の呼び出しグラフ:

| void NewtObjChainFree | ( | newtPool | pool, | |
| newtObjRef * | objp | |||
| ) | [static] |
オブジェクトデータにチェインされている全てのオブジェクトデータを解放する
| pool | [in] メモリプール | |
| objp | [i/o]オブジェクトデータへのポインタ |
参照先 newtObj::header・NewtObjFree()・newtObjHeader::nextp.
参照元 NewtPoolRelease().
関数の呼び出しグラフ:

| void NewtObjFree | ( | newtPool | pool, | |
| newtObjRef | obj | |||
| ) | [static] |
オブジェクトを解放する
| pool | [in] メモリプール | |
| obj | [in] オブジェクト |
参照先 NewtAlign()・NewtMemFree()・NewtObjCalcDataSize()・NewtObjData()・NewtObjIsLiteral・NewtObjSize・newtpool_t::usesize.
参照元 NewtObjChainFree()・NewtPoolSweep().
関数の呼び出しグラフ:

| void NewtPoolChain | ( | newtPool | pool, | |
| newtObjRef | obj, | |||
| bool | literal | |||
| ) | [static] |
メモリプール内でオブジェクトデータをチェインする
| pool | [in] メモリプール | |
| obj | [in] チェインするオブジェクトデータ | |
| literal | [in] リテラルかどうか |
参照先 newtpool_t::literal・NewtObjChain()・newtpool_t::obj.
参照元 NewtObjChainAlloc().
関数の呼び出しグラフ:

| void NewtPoolRelease | ( | newtPool | pool | ) |
メモリプールの解放
| pool | [in] メモリプール |
参照先 newtpool_t::literal・NEWT_DEBUG・NewtObjChainFree()・NewtPoolSnap()・newtpool_t::obj・newtpool_t::usesize.
参照元 NewtCleanup().
関数の呼び出しグラフ:

| void NewtPoolSnap | ( | const char * | title, | |
| newtPool | pool, | |||
| int32_t | usesize | |||
| ) | [static] |
メモリプールのスナップショットを出力する
| title | [in] タイトル | |
| pool | [in] メモリプール | |
| usesize | [in] GC前の使用サイズ |
参照先 NewtDebugMsg()・newtpool_t::usesize.
参照元 NewtPoolRelease()・NewtPoolSweep().
関数の呼び出しグラフ:

| void NewtPoolSweep | ( | newtPool | pool, | |
| bool | mark | |||
| ) | [static] |
メモリプール内のオブジェクトをスウィープ(掃除)する
| pool | [in] メモリプール | |
| mark | [in] マークフラグ |
参照先 newtpool_t::expandspace・newtObj::header・newtpool_t::literal・newtpool_t::maxspace・NEWT_DEBUG・NewtObjChain()・NewtObjFree()・NewtObjIsLiteral・NewtObjIsSweep・NewtPoolSnap()・newtObjHeader::nextp・newtpool_t::obj・newtpool_t::usesize.
参照元 NewtGC().
関数の呼び出しグラフ:

| newtRef NsGC | ( | newtRefArg | rcvr | ) |
スクリプトから GC を呼出す(実際には GC を予約するだけ)
| rcvr | [in] レシーバ |
参照先 kNewtRefNIL・NEWT_NEEDGC.
参照元 NVMInitGlobalFns1().
1.5.0