NewtVM.h

VM [詳細]

#include <stdio.h>
#include "NewtType.h"
#include "NewtMem.h"

ソースコードを見る。

データ構造

struct  vm_reg_t
 VM レジスタ [詳細]
struct  vm_excp_t
 例外ハンドラ [詳細]
struct  vm_env_t
 VM 実行環境 [詳細]

列挙型

enum  {
  kIterIndex = 0, kIterValue, kIterObj, kIterDeeply,
  kIterPos, kIterMax, kIterMap, kIterALength
}
 イテレータの要素位置 [詳細]

関数

newtRef NVMSelf (void)
newtRef NVMCurrentFunction (void)
newtRef NVMCurrentImplementor (void)
bool NVMHasVar (newtRefArg name)
void NVMThrowData (newtRefArg name, newtRefArg data)
void NVMThrow (newtRefArg name, newtRefArg data)
void NVMRethrow (void)
newtRef NVMCurrentException (void)
void NVMClearException (void)
bool NVMFuncCheckNumArgs (newtRefArg fn, int16_t numArgs)
void NVMDumpInstName (FILE *f, uint8_t a, int16_t b)
void NVMDumpCode (FILE *f, uint8_t *bc, uint32_t len)
void NVMDumpBC (FILE *f, newtRefArg instructions)
void NVMDumpFn (FILE *f, newtRefArg fn)
void NVMDumpStackTop (FILE *f, char *s)
void NVMDumpStacks (FILE *f)
void NVMFnCall (newtRefArg fn, int16_t numArgs)
newtRef NVMInterpret (newtRefArg fn, newtErr *errP)
newtErr NVMInfo (const char *name)
newtRef NVMCall (newtRefArg fn, int16_t numArgs, newtErr *errP)
newtRef NVMInterpretFile (const char *path, newtErr *errP)
newtRef NVMInterpretStr (const char *s, newtErr *errP)
newtRef NVMMessageSendWithArgArray (newtRefArg inImpl, newtRefArg inRcvr, newtRefArg inFunction, newtRefArg inArgs)

変数

vm_env_t vm_env
 VM 実行環境


説明

VM

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

NewtVM.h で定義されています。


列挙型

anonymous enum

イテレータの要素位置

列挙型の値:
kIterIndex  繰り返し中の位置
kIterValue 
kIterObj  オブジェクト
kIterDeeply  deeply フラグ
kIterPos  オブジェクトの位置
kIterMax  オブジェクトの長さ
kIterMap  frameオブジェクトのマップ
kIterALength  イテレータ配列の長さ

NewtVM.h26 行で定義されています。


関数

newtRef NVMCall ( newtRefArg  fn,
int16_t  numArgs,
newtErr errP 
)

関数オブジェクトを実行

引数:
fn [in] 関数オブジェクト
numArgs [in] 引数の数
errP [out]エラーコード
戻り値:
スタックのトップオブジェクト

NewtVM.c3693 行で定義されています。

参照先 CALLSPCURREXCPkNErrNonekNewtRefUnbindNewtRefIsNotNILNVMFnCall()NVMGetExceptionErrCode()NVMLoop()stk_top().

参照元 NsLoad()NVMInterpret().

関数の呼び出しグラフ:

void NVMClearException ( void   ) 

現在の例外をクリアする

戻り値:
なし
覚え書き:
ネイティブ関数で例外処理を行うために使用

NewtVM.c572 行で定義されています。

参照先 CURREXCPkNewtRefUnbind.

newtRef NVMCurrentException ( void   ) 

現在の例外を取得する

戻り値:
例外フレーム

NewtVM.c542 行で定義されています。

参照先 CURREXCP.

参照元 NsCurrentException().

newtRef NVMCurrentFunction ( void   ) 

現在の関数オブジェクトを取得する

戻り値:
現在の関数オブジェクト

NewtVM.c365 行で定義されています。

参照先 FUNC.

newtRef NVMCurrentImplementor ( void   ) 

現在のインプリメンタを取得する

戻り値:
現在のインプリメンタ

NewtVM.c376 行で定義されています。

参照先 IMPL.

void NVMDumpBC ( FILE *  f,
newtRefArg  instructions 
)

出力ファイルにバイトコードをダンプ出力

引数:
f [in] 出力ファイル
instructions [in] バイトコード
戻り値:
なし

NewtVM.c3258 行で定義されています。

参照先 NewtLength()NewtRefIsBinary()NewtRefToBinaryNVMDumpCode().

参照元 NsDumpBC()NVMDumpFn().

関数の呼び出しグラフ:

void NVMDumpCode ( FILE *  f,
uint8_t *  bc,
uint32_t  len 
)

出力ファイルにバイトコードをダンプ出力

引数:
f [in] 出力ファイル
bc [in] バイトコード
len [in] バイトコードの長さ
戻り値:
なし

NewtVM.c3208 行で定義されています。

参照先 kNBCFieldMaskNewtFprintf()NVMDumpInstCode()NVMDumpInstName().

参照元 NVMDumpBC().

関数の呼び出しグラフ:

void NVMDumpFn ( FILE *  f,
newtRefArg  func 
)

出力ファイルに関数オブジェクトをダンプ出力

引数:
f [in] 出力ファイル
func [in] 関数オブジェクト
戻り値:
なし

NewtVM.c3282 行で定義されています。

参照先 FUNCNcGetGlobalFnNcGetSlotNewtFprintf()NewtPrintObject()NewtRefIsFunction()NewtRefIsNIL()NewtRefIsSymbol()NSSYM0NVMDumpBC().

参照元 NBCGenBC()NsDumpFn().

関数の呼び出しグラフ:

void NVMDumpInstName ( FILE *  f,
uint8_t  a,
int16_t  b 
)

出力ファイルに命令コードの名前をダンプ出力

引数:
f [in] 出力ファイル
a [in] オペコード
b [in] オペデータ
戻り値:
なし

NewtVM.c3095 行で定義されています。

参照先 fn_instruction_nameskBCFuncsLenkNBCInstructionsLenkNBCSimpleInstructionsLenNewtFprintf()simple_instruction_namesvm_instruction_names.

参照元 NPSDumpSyntaxTree()NVMDumpCode()NVMLoop().

関数の呼び出しグラフ:

void NVMDumpStacks ( FILE *  f  ) 

出力ファイルにスタックをダンプ出力

引数:
f [in] 出力ファイル
戻り値:
なし

NewtVM.c3314 行で定義されています。

参照先 NewtPrintObject()SPSTACK.

参照元 NsDumpStacks().

関数の呼び出しグラフ:

void NVMDumpStackTop ( FILE *  f,
char *  s 
)

出力ファイルにスタックの先頭をダンプ出力

引数:
f [in] 出力ファイル
s [in] 区切り文字列
戻り値:
なし

NewtVM.c3189 行で定義されています。

参照先 NewtFputs()NewtPrintObj()stk_top().

参照元 NVMDumpInstResult().

関数の呼び出しグラフ:

void NVMFnCall ( newtRefArg  fn,
int16_t  numArgs 
)

呼出す関数オブジェクトをセット

引数:
fn [in] 関数オブジェクト
numArgs [in] 引数の数
戻り値:
なし

NewtVM.c3675 行で定義されています。

参照先 is_invoke()si_set_lex_scope()stk_push().

参照元 NVMCall().

関数の呼び出しグラフ:

bool NVMFuncCheckNumArgs ( newtRefArg  fn,
int16_t  numArgs 
)

関数の引数の数をチェックする

引数:
fn [in] 関数オブジェクト
numArgs [in] 引数の数
戻り値:
true 正常
false 不正

NewtVM.c1145 行で定義されています。

参照先 NcGetSlotNewtRefIsNIL()NewtRefToInteger()NSSYM0.

参照元 NVMFuncCheck().

関数の呼び出しグラフ:

bool NVMHasVar ( newtRefArg  name  ) 

変数の存在チェック

引数:
name [in] 変数シンボル
戻り値:
true 変数が存在する
false 変数が存在しない

NewtVM.c391 行で定義されています。

参照先 LOCALSNewtHasGlobalVar()NewtHasLexical()NewtHasVariable()RCVR.

関数の呼び出しグラフ:

newtErr NVMInfo ( const char *  name  ) 

指定された関数の情報を表示

引数:
name [in] 関数名
戻り値:
エラーコード

NewtVM.c3791 行で定義されています。

参照先 kNErrNoneNewtInfo()NewtInfoGlobalFns()NewtMakeSymbol()NVMClean()NVMInit().

参照元 newt_info().

関数の呼び出しグラフ:

newtRef NVMInterpret ( newtRefArg  fn,
newtErr errP 
)

関数オブジェクトを実行

引数:
fn [in] 関数オブジェクト
errP [out]エラーコード
戻り値:
スタックのトップオブジェクト

NewtVM.c3727 行で定義されています。

参照先 kNErrNonekNewtRefUnbindNEWT_TRACENewtFprintf()NewtGC()NewtRefIsNotNILNVMCall()NVMClean()NVMInit().

参照元 NVMInterpret2().

関数の呼び出しグラフ:

newtRef NVMInterpretFile ( const char *  path,
newtErr errP 
)

ファイルを読込んでスクリプトを実行

引数:
path [in] ファイルのパス
errP [out]エラーコード
戻り値:
スタックのトップオブジェクト

NewtVM.c3818 行で定義されています。

参照先 kNErrNonekNewtRefUnbindNPSParseFile()NVMInterpret2().

参照元 newt_interpret_file().

関数の呼び出しグラフ:

newtRef NVMInterpretStr ( const char *  s,
newtErr errP 
)

文字列をコンパイルしてスクリプトを実行

引数:
s [in] 文字列
errP [out]エラーコード
戻り値:
スタックのトップオブジェクト

NewtVM.c3846 行で定義されています。

参照先 kNErrNonekNewtRefUnbindNPSParseStr()NVMInterpret2().

参照元 newt_interpret_str().

関数の呼び出しグラフ:

newtRef NVMMessageSendWithArgArray ( newtRefArg  inImpl,
newtRefArg  inRcvr,
newtRefArg  inFunction,
newtRefArg  inArgs 
)

Execute a function as if it was a method of an object.

引数:
inImpl implementor.
inRcvr object.
inFunction function to execute.
inArgs array of arguments.
戻り値:
the result of the call.

NewtVM.c3875 行で定義されています。

参照先 CALLSPNewtArrayLengthNewtGetArraySlot()NVMLoop()NVMMessageSend()stk_push()stk_top()vm_env.

関数の呼び出しグラフ:

void NVMRethrow ( void   ) 

rethrow する

戻り値:
なし

NewtVM.c520 行で定義されています。

参照先 CURREXCPNcGetSlotNewtRefIsNotNILNSSYM0NVMThrowData().

参照元 NsRethrow().

関数の呼び出しグラフ:

newtRef NVMSelf ( void   ) 

self を取得

戻り値:
self

NewtVM.c354 行で定義されています。

参照先 RCVR.

void NVMThrow ( newtRefArg  name,
newtRefArg  data 
)

例外を発生させる

引数:
name [in] シンボル
data [in] データ
戻り値:
なし

NewtVM.c505 行で定義されています。

参照先 NVMMakeExceptionFrame()NVMThrowData().

参照元 NsThrow().

関数の呼び出しグラフ:

void NVMThrowData ( newtRefArg  name,
newtRefArg  data 
)

例外を発生させる

引数:
name [in] シンボル
data [in] 例外フレーム
戻り値:
なし

NewtVM.c470 行で定義されています。

参照先 vm_excp_t::callspCURREXCPEXCPSPEXCPSTACKNewtHasSubclass()NVMClearCurrException()PCvm_excp_t::pcreg_rewind()vm_excp_t::sym.

参照元 NVMRethrow()NVMThrow().

関数の呼び出しグラフ:


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