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 ReJITCompilationStarted
bijvoorbeeld 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