Delen via


Methode ICorProfilerCallback4::ReJITCompilationStarted

Hiermee wordt aan de profiler gemeld dat de JIT-compiler (Just-In-Time) is begonnen met het opnieuw compileren van een functie.

Syntaxis

HRESULT ReJITCompilationStarted(
    [in] FunctionID functionId,  
    [in] ReJITID    rejitId,  
    [in] BOOL       fIsSafeToBlock);  

Parameters

functionId
[in] De id van de functie die de JIT-compiler opnieuw is gaan compileren.

rejitId
[in] De hercompilatie-id van de nieuwe versie van de functie.

fIsSafeToBlock
[in] true om aan te geven dat blokkering ertoe kan leiden dat de runtime wacht tot de aanroepende thread terugkeert van deze callback; false om aan te geven dat blokkering geen invloed heeft op de werking van de runtime. Een waarde van true is niet schadelijk voor de runtime, maar kan van invloed zijn op de profileringsresultaten.

Opmerkingen

Het is mogelijk om meer dan één paar van ReJITCompilationStarted en ReJITCompilationFinished-aanroepen te ontvangen voor elke functie vanwege de manier waarop de runtime klasseconstructors verwerkt. De runtime begint bijvoorbeeld met het opnieuw compileren van methode A, maar de klasseconstructor voor klasse B moet worden uitgevoerd. Daarom wordt de constructor voor klasse B opnieuw gecompileerd door de runtime en wordt deze uitgevoerd. Terwijl de constructor wordt uitgevoerd, wordt methode A aangeroepen, waardoor methode A opnieuw wordt gecompileerd. In dit scenario wordt de eerste hercompilatie van methode A gestopt. Beide pogingen om methode A opnieuw te compileren, worden echter gerapporteerd met JIT-hercompilatie-gebeurtenissen.

Profilers moeten ondersteuning bieden voor de volgorde van JIT-hercompilatie-callbacks in gevallen waarin twee threads tegelijkertijd callbacks uitvoeren. Thread A roept ReJITCompilationStartedbijvoorbeeld aan, maar voordat thread A ReJITCompilationFinished aanroept, roept thread B ICorProfilerCallback::ExceptionSearchFunctionEnter aan met de functie-id van de ReJITCompilationStarted callback voor thread A. Het lijkt erop dat de functie-id nog niet geldig moet zijn omdat een aanroep naar ReJITCompilationFinished nog niet is ontvangen door de profiler. In dit geval is de functie-id echter geldig.

Vereisten

Platforms: Zie Systeemvereisten.

Header: CorProf.idl, CorProf.h

Bibliotheek: CorGuids.lib

.NET Framework versies: beschikbaar sinds 4.5

Zie ook