CIL フォーマット
29
(T) / calli
(callsitedescr)
スタック
..., arg1, arg2, ..., argn, ftn → ..., retVal (not always returned)
詳細
ftnで指定したメソッドを呼び出します。 ftnはメソッドのエントリポイントのポインタです。 引数の型はcallsitedescrで表されます。
calli命令の直前に「tail.」プレフィックスが指定されていた場合、 呼び出したメソッドに処理が移る前に、現在のメソッド状態が解放されます。 ただし、より信頼レベルの高いメソッドに処理が移る場合にはスタックは解放されず、 「tail.」プレフィックスが指定されなかった場合と同じように処理が続けられます。
ftnはターゲットマシンのネイティブコードへのポインタです。 このポインタには「ldftn」や「ldvirtftn」で生成されたものか、 ネイティブコードから渡されたものを使います。
callsitedescrはスタンドアロン・シグネチャのメタデータ・トークンです。 このスタンドアロン・シグネチャでは渡される引数の数と型、 及び呼び出し規約を規定します。 呼び出し規約は動的にはチェックされないので、 呼び出すメソッドが指定した呼び出し規約に一致していなかった場合は コードは正常に動作しません。
引数は左から右の順でスタックに積みます。 インスタンス・メソッドまたはvirtualメソッドを呼び出す場合、 全ての引数より前に、インスタンス参照(thisポインタ)をスタックに追加します。
Exception
呼び出すメソッドに対するアクセス権が現在のメソッドに与えられていない場合、 SecurityException が発生します。