Bagikan melalui


Metode ICorProfilerCallback::JITCompilationStarted

Memberi tahu profiler bahwa kompilator just-in-time (JIT) telah mulai mengompilasi fungsi.

Sintaks

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

Parameter

functionId [di] ID fungsi yang kompilasinya dimulai.

fIsSafeToBlock [in] Nilai yang menunjukkan kepada profiler apakah pemblokiran akan memengaruhi pengoperasian runtime. Nilainya adalah true jika pemblokiran dapat menyebabkan runtime menunggu utas panggilan kembali dari panggilan balik ini; jika tidak, nilainya adalah false.

Meskipun nilai true tidak akan membahayakan runtime, itu dapat mengubah hasil pembuatan profil.

Keterangan

Dimungkinkan untuk menerima lebih dari satu pasang panggilan JITCompilationStarted dan ICorProfilerCallback::JITCompilationFinished untuk setiap fungsi karena cara runtime bahasa umum menangani konstruktor kelas. Misalnya, runtime bahasa umum mulai mengompilasi JIT metode A, tetapi konstruktor kelas untuk kelas B perlu dijalankan. Oleh karena itu, runtime JIT-mengompilasi konstruktor untuk kelas B dan menjalankannya. Saat konstruktor berjalan, konstruktor melakukan panggilan ke metode A, yang menyebabkan metode A dikompilasi lagi oleh JIT. Dalam skenario ini, kompilasi JIT pertama dari metode A dihentikan. Tetapi, kedua upaya untuk mengompilasi JIT metode A dilaporkan dengan peristiwa kompilasi JIT. Jika profiler akan mengganti kode bahasa perantara umum (CIL) untuk metode A dengan memanggil metode ICorProfilerInfo::SetILFunctionBody , ia harus melakukannya untuk kedua JITCompilationStarted peristiwa, tetapi dapat menggunakan blok CIL yang sama untuk keduanya.

Profiler harus mendukung urutan panggilan balik JIT dalam kasus di mana dua utas secara bersamaan membuat panggilan balik. Misalnya, utas A memanggil JITCompilationStarted. Tetapi, sebelum utas A memanggil JITCompilationFinished, utas B memanggil ICorProfilerCallback::ExceptionSearchFunctionEnter dengan ID fungsi dari panggilan balik JITCompilationStarted utas A. Sepertinya ID fungsi belum valid karena panggilan ke JITCompilationFinished belum diterima oleh profiler. Tetapi, dalam kasus seperti ini, ID fungsi valid.

Persyaratan

Platform: Lihat Persyaratan Sistem.

Header: CorProf.idl, CorProf.h

Pustaka: CorGuids.lib

Versi .NET Framework: Tersedia mulai dari 2.0

Lihat juga