Dela via


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, falseannars .

Ä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 JITCompilationFinishedtrå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

Se även