Sdílet prostřednictvím


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í JITCompilationStartedA vlákna . Před voláním vlákna A JITCompilationFinishedvš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

Viz také