Aracılığıyla paylaş


ICorProfilerCallback::JITCompilationStarted Yöntemi

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

Sözdizimi

HRESULT JITCompilationStarted(
    [in] FunctionID functionId,
    [in] BOOL       fIsSafeToBlock);

Parametreler

functionId [in] Derlemenin başlatıldığı işlevin kimliği.

fIsSafeToBlock [in] Profil oluşturucuya engellemenin çalışma zamanının çalışmasını etkileyip etkilemeyeceğini belirten bir değer. Engelleme, çalışma zamanının çağıran iş parçacığının bu geri çağırmadan dönmesini beklemesine neden oluyorsa değeridir true ; aksi takdirde , false.

değeri true çalışma zamanına zarar vermese de, profil oluşturma sonuçlarını çarpıtabilir.

Açıklamalar

Çalışma zamanının JITCompilationStarted sınıf oluşturucularını işleme şekli nedeniyle her işlev için birden fazla çift ve ICorProfilerCallback::JITCompilationFinished çağrıları almak mümkündür. Örneğin, çalışma zamanı A JIT derleme yöntemine başlar, ancak B sınıfının sınıf oluşturucusunun çalıştırılması gerekir. Bu nedenle çalışma zamanı JIT, B sınıfı için oluşturucuyu derler ve çalıştırır. Oluşturucu çalışırken A yöntemine bir çağrı yapar ve bu da A yönteminin yeniden JIT ile derlenmiş olmasına neden olur. Bu senaryoda, A yönteminin ilk JIT derlemesi durduruldu. Ancak, A JIT derleme yöntemine yönelik her iki girişim de JIT derleme olaylarıyla bildirilir. Profil oluşturucu, ICorProfilerInfo::SetILFunctionBody yöntemini çağırarak A yöntemi için ortak ara dil (CIL) kodunun yerini alacaksa, bunu her iki olay için de yapmalıdır, ancak her ikisi JITCompilationStarted için de aynı CIL bloğunu kullanabilir.

Profil oluşturucular, iki iş parçacığının aynı anda geri çağırmalar yaptığı durumlarda JIT geri çağırmalarının sırasını desteklemelidir. Örneğin, iş parçacığı A çağrısında bulunur JITCompilationStarted. Ancak, A iş parçacığı çağrılmadan JITCompilationFinishedönce, B iş parçacığı A iş parçacığının geri çağırmasından işlev kimliğiyle ICorProfilerCallback::ExceptionSearchFunctionEnter'ıJITCompilationStarted çağırır. profil oluşturucu tarafından çağrı alınmadığından işlev kimliğinin henüz geçerli JITCompilationFinished olmaması gerektiği görünebilir. Ancak, bunun gibi bir durumda işlev kimliği geçerlidir.

Gereksinimler

Platformlar: Bkz. Sistem Gereksinimleri.

Üst bilgi: CorProf.idl, CorProf.h

Kitaplık: CorGuids.lib

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

Ayrıca bkz.