ICorProfilerCallback::JITCompilationStarted-metod
Meddelar profileraren att jit-kompilatorn (just-in-time) har börjat kompilera en funktion.
Syntax
HRESULT JITCompilationStarted(
[in] FunctionID functionId,
[in] BOOL fIsSafeToBlock);
Parametrar
functionId
[i] ID:t för den funktion som kompileringsfunktionen startar för.
fIsSafeToBlock
[i] Ett värde som anger för profileraren om blockering påverkar körningens funktion. Värdet är true
om blockering kan leda till att körningen väntar på att den anropande tråden ska returneras från det här återanropet, false
annars .
Även om värdet true
för inte skadar körningen kan det förvränga profileringsresultatet.
Kommentarer
Det går att ta emot fler än ett par JITCompilationStarted
och ICorProfilerCallback::JITCompilationFinished-anrop för varje funktion på grund av hur körningen hanterar klasskonstruktorer. Körningen börjar till exempel med JIT-kompileringsmetod A, men klasskonstruktorn för klass B måste köras. Därför kompilerar RUNTIME JIT-konstruktorn för klass B och kör den. Medan konstruktorn körs gör den ett anrop till metod A, vilket gör att metod A blir JIT-kompilerad igen. I det här scenariot stoppas den första JIT-kompilering av metod A. Båda försöken att JIT-kompilera metod A rapporteras dock med JIT-kompileringshändelser. Om profileraren ska ersätta CIL-koden (Common Intermediate Language) för metod A genom att anropa metoden ICorProfilerInfo::SetILFunctionBody måste den göra det för båda JITCompilationStarted
händelserna, men det kan använda samma CIL-block för båda.
Profilerare måste ha stöd för sekvensen med JIT-återanrop i fall där två trådar samtidigt gör återanrop. T.ex. tråd A anropar JITCompilationStarted
. Men före tråd A-anrop anropar JITCompilationFinished
tråd B ICorProfilerCallback::ExceptionSearchFunctionEnter med funktions-ID:t från tråd A:s JITCompilationStarted
återanrop. Det kan verka som om funktions-ID:t ännu inte ska vara giltigt eftersom ett anrop till JITCompilationFinished
ännu inte har tagits emot av profileraren. Men i ett fall som det här är funktions-ID:t giltigt.
Krav
Plattformar: Se Systemkrav.
Rubrik: CorProf.idl, CorProf.h
Bibliotek: CorGuids.lib
.NET Framework-versioner: Tillgänglig sedan 2.0