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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk