Aracılığıyla paylaş


ICorProfilerCallback4::ReJITCompilationStarted Yöntemi

Tam zamanında (JIT) derleyicisinin bir işlevi yeniden derlemeye başladığını profil oluşturucuya bildirir.

Sözdizimi

HRESULT ReJITCompilationStarted(
    [in] FunctionID functionId,  
    [in] ReJITID    rejitId,  
    [in] BOOL       fIsSafeToBlock);  

Parametreler

functionId
[in] JIT derleyicisinin yeniden derlemeye başladığı işlevin kimliği.

rejitId
[in] İşlevin yeni sürümünün yeniden derleme kimliği.

fIsSafeToBlock
[in] true engellemenin çalışma zamanının çağıran iş parçacığının bu geri çağırmadan dönmesini beklemesine neden olabileceğini belirtmek için; false engellemenin çalışma zamanının çalışmasını etkilemeyeceğini belirtmek için. değeri true çalışma zamanına zarar vermez, ancak profil oluşturma sonuçlarını etkileyebilir.

Açıklamalar

Çalışma zamanının ReJITCompilationStarted sınıf oluşturucularını işleme şekli nedeniyle her işlev için birden fazla çift ve ReJITCompilationFinished yöntemi çağrıları almak mümkündür. Örneğin, çalışma zamanı A yöntemini yeniden derlemeye başlar, ancak B sınıfı için sınıf oluşturucunun çalıştırılması gerekir. Bu nedenle, çalışma zamanı B sınıfı için oluşturucuyu yeniden derler ve çalıştırır. Oluşturucu çalışırken A yöntemine çağrı yapar ve bu da A yönteminin yeniden derlenmelerine neden olur. Bu senaryoda, A yönteminin ilk yeniden derlemesi durduruldu. Ancak, A yöntemini yeniden derleme girişimlerinin her ikisi de JIT yeniden derleme olaylarıyla bildirilir.

Profil oluşturucular, iki iş parçacığının aynı anda geri çağırmalar yaptığı durumlarda JIT yeniden derleme geri çağırmalarının sırasını desteklemelidir. Örneğin, iş parçacığı A çağırırReJITCompilationStarted; ancak A iş parçacığı ReJITCompilationFinished çağrısı yapmadan önce, B iş parçacığı A iş parçacığının geri çağırmasından ReJITCompilationStarted işlev kimliğiyle ICorProfilerCallback::ExceptionSearchFunctionEnter'ı çağırır. Profil oluşturucu tarafından ReJITCompilationFinished çağrısı henüz alınmadığından işlev kimliğinin henüz geçerli olmaması gerektiği görünebilir. Ancak bu durumda işlev kimliği geçerlidir.

Gereksinimler

Platform: Bkz. Sistem Gereksinimleri.

Üstbilgi: CorProf.idl, CorProf.h

Kitaplığı: CorGuids.lib

.NET Framework Sürümleri: 4.5 sürümünden itibaren kullanılabilir

Ayrıca bkz.