Bagikan melalui


Fungsi FunctionTailcall

Memberi tahu profiler bahwa fungsi eksekusi saat ini akan melakukan panggilan ekor ke fungsi lain.

Catatan

Fungsi FunctionTailcall ini tidak digunakan lagi dalam .NET Framework versi 2.0. Ini akan terus bekerja, tetapi akan dikenakan penalti kinerja. Gunakan fungsi FunctionTailcall2 sebagai gantinya.

Sintaks

void __stdcall FunctionTailcall (  
    [in] FunctionID funcID  
);  

Parameter

funcID [in] Pengidentifikasi dari fungsi yang sedang dijalankan dan akan melakukan panggilan ekor.

Keterangan

Fungsi target dari panggilan ekor akan menggunakan bingkai tumpukan saat ini, dan akan menampilkan langsung ke pemanggil fungsi yang membuat panggilan ekor. Ini berarti bahwa panggilan balik FunctionLeave tidak akan dikeluarkan untuk fungsi yang merupakan target panggilan ekor.

Fungsi FunctionTailcall adalah panggilan balik; Anda harus menerapkannya. Implementasi harus menggunakan atribut kelas penyimpanan __declspec(naked).

Mesin eksekusi tidak menyimpan register apa pun sebelum memanggil fungsi ini.

  • Saat masuk, Anda harus menyimpan semua register yang Anda gunakan, termasuk yang ada di floating-point unit (FPU).

  • Saat keluar, Anda harus memulihkan tumpukan dengan memunculkan semua parameter yang didorong oleh pemanggilnya.

Implementasi FunctionTailcall tidak boleh memblokir karena akan menunda pengumpulan sampah. Implementasi tidak boleh mencoba pengumpulan sampah karena tumpukannya mungkin tidak dalam keadaan yang ramah pengumpulan sampah. Jika pengumpulan sampah dicoba, runtime akan memblokir hingga FunctionTailcall kembali.

Selain itu, fungsi FunctionTailcall tidak boleh memanggil kode terkelola atau dengan cara apa pun menyebabkan alokasi memori terkelola.

Persyaratan

Platform: Lihat Persyaratan Sistem.

Header: CorProf.idl

Pustaka: CorGuids.lib

Versi .NET Framework: 1.1, 1.0

Lihat juga