ICorProfilerCallback::JITCompilationStarted – metoda
Upozorní profiler, že kompilátor JIT (just-in-time) začal kompilovat funkci.
Syntaxe
HRESULT JITCompilationStarted(
[in] FunctionID functionId,
[in] BOOL fIsSafeToBlock);
Parametry
functionId
[v] ID funkce, pro kterou se kompilace spouští.
fIsSafeToBlock
[v] Hodnota indikující profileru, zda blokování ovlivní provoz modulu runtime. Hodnota je true
v případě, že blokování může způsobit, že modul runtime čeká na vrácení volajícího vlákna z tohoto zpětného volání, jinak . false
I když hodnota true
nepoškodí modul runtime, může výsledky profilace zkosit.
Poznámky
Je možné přijmout více než jeden pár JITCompilationStarted
a ICorProfilerCallback::JITCompilationFinished volání pro každou funkci kvůli způsobu, jakým modul runtime zpracovává konstruktory třídy. Například modul runtime začíná jit-compile metoda A, ale konstruktor třídy pro třídu B musí být spuštěn. Proto modul runtime JIT-zkompiluje konstruktor pro třídu B a spustí ho. Zatímco je konstruktor spuštěný, volá metodu A, což způsobí, že metoda A bude znovu zkompilována JIT. V tomto scénáři se zastaví první kompilace JIT metody A. Oba pokusy o metodu JIT-compile A jsou však hlášeny s událostmi kompilace JIT. Pokud profiler nahradí kód CIL (Common Intermediate Language) metody A voláním ICorProfilerInfo::SetILFunctionBody metoda, musí to udělat pro obě JITCompilationStarted
události, ale může použít stejný blok CIL pro oba.
Profilátory musí podporovat posloupnost zpětných volání JIT v případech, kdy dvě vlákna současně provádějí zpětná volání. Například volání JITCompilationStarted
A vlákna . Před voláním vlákna A JITCompilationFinished
však vlákno B volá ICorProfilerCallback::ExceptionSearchFunctionEnter s ID funkce z zpětného JITCompilationStarted
volání vlákna A. Může se zdát, že ID funkce by ještě nemělo být platné, protože profiler ještě nepřijal volání JITCompilationFinished
. V takovém případě je ale ID funkce platné.
Požadavky
Platformy: Viz požadavky na systém.
Hlavička: CorProf.idl, CorProf.h
Knihovna: CorGuids.lib
Verze rozhraní .NET Framework: Dostupné od verze 2.0