FunctionTailcall İşlevi
Şu anda yürütülen işlevin başka bir işleve kuyruk çağrısı yapmak üzere olduğunu profil oluşturucuya bildirir.
Not
İşlevFunctionTailcall
, .NET Framework sürüm 2.0'da kullanım dışıdır. Çalışmaya devam eder, ancak bir performans cezasına neden olur. Bunun yerine FunctionTailcall2 işlevini kullanın.
Sözdizimi
void __stdcall FunctionTailcall (
[in] FunctionID funcID
);
Parametreler
funcID
[in] Kuyruk çağrısı yapmak üzere olan yürütülmekte olan işlevin tanımlayıcısı.
Açıklamalar
Kuyruk çağrısının hedef işlevi geçerli yığın çerçevesini kullanır ve doğrudan kuyruk çağrısını yapan işlevin çağırana döner. Bu, bir kuyruk çağrısının hedefi olan bir işlev için FunctionLeave geri çağırmasının verilmeyeceği anlamına gelir.
FunctionTailcall
işlevi bir geri çağırmadır; bunu uygulamanız gerekir. Uygulamanın (naked
) depolama sınıfı özniteliğini __declspec
kullanması gerekir.
Yürütme altyapısı bu işlevi çağırmadan önce hiçbir yazmaç kaydetmez.
Girişte, kayan nokta birimindeki (FPU) olanlar da dahil olmak üzere kullandığınız tüm yazmaçları kaydetmeniz gerekir.
Çıkışta, çağıranı tarafından gönderilen tüm parametreleri çıkararak yığını geri yüklemeniz gerekir.
uygulaması FunctionTailcall
, çöp toplamayı geciktireceği için engellememelidir. Yığın çöp toplama dostu bir durumda olmayabileceği için uygulama çöp toplamayı denememelidir. Çöp toplama denenirse, çalışma zamanı dönene kadar FunctionTailcall
engeller.
Ayrıca, işlevin FunctionTailcall
yönetilen koda çağrı yapmaması veya herhangi bir şekilde yönetilen bellek ayırmaya neden olması gerekir.
Gereksinimler
Platform: Bkz. Sistem Gereksinimleri.
Üstbilgi: CorProf.idl
Kitaplığı: CorGuids.lib
.NET Framework Sürümleri: 1.1, 1.0