Delen via


Methode ICorProfilerCallback::JITCompilationStarted

Hiermee wordt de profiler op de hoogte gebracht dat de Just-In-Time-compiler (JIT) is begonnen met het compileren van een functie.

Syntaxis

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

Parameters

functionId [in] De id van de functie waarvoor de compilatie wordt gestart.

fIsSafeToBlock [in] Een waarde die aangeeft aan de profiler of blokkeren van invloed is op de werking van de runtime. De waarde is true als blokkeren ertoe kan leiden dat de runtime wacht tot de aanroepende thread wordt geretourneerd vanuit deze callback; falseanders.

Hoewel een waarde van true deze waarde de runtime niet zal schaden, kan deze de profileringsresultaten scheeftrekken.

Opmerkingen

Het is mogelijk om meer dan één paar JITCompilationStarted en ICorProfilerCallback::JITCompilationFinished-aanroepen voor elke functie te ontvangen vanwege de manier waarop de runtime klasseconstructors verwerkt. De runtime begint bijvoorbeeld met JIT-compileermethode A, maar de klasseconstructor voor klasse B moet worden uitgevoerd. Daarom compileert de runtime-JIT de constructor voor klasse B en voert deze uit. Terwijl de constructor wordt uitgevoerd, wordt er een aanroep uitgevoerd naar methode A, waardoor methode A opnieuw wordt gecompileerd. In dit scenario wordt de eerste JIT-compilatie van methode A gestopt. Beide pogingen om methode A te compileren, worden echter gerapporteerd met JIT-compilatiegebeurtenissen. Als de profiler de algemene tussentaalcode (CIL) voor methode A gaat vervangen door de methode ICorProfilerInfo::SetILFunctionBody aan te roepen, moet dit voor beide JITCompilationStarted gebeurtenissen gebeuren, maar het kan hetzelfde CIL-blok voor beide gebruiken.

Profilers moeten de volgorde van JIT-callbacks ondersteunen in gevallen waarin twee threads tegelijkertijd callbacks maken. Bijvoorbeeld thread A-aanroepen JITCompilationStarted. Voordat thread A wordt aangeroepen JITCompilationFinished, roept thread B echter ICorProfilerCallback::ExceptionSearchFunctionEnter aan met de functie-id van de callback van thread A JITCompilationStarted . Het lijkt erop dat de functie-id nog niet geldig moet zijn omdat er nog geen aanroep van JITCompilationFinished de profiler is ontvangen. In een dergelijke situatie is de functie-id echter geldig.

Vereisten

Platformen: Zie Systeemvereisten.

Koptekst: CorProf.idl, CorProf.h

Bibliotheek: CorGuids.lib

.NET Framework-versies: beschikbaar sinds 2.0

Zie ook