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