ICorProfilerInfo4::RequestReJIT – metoda
Vyžaduje rekompilace JIT všech instancí zadaných funkcí.
Syntaxe
HRESULT RequestReJIT (
[in] ULONG cFunctions,
[in, size_is(cFunctions)] ModuleID moduleIds[],
[in, size_is(cFunctions)] mdMethodDef methodIds[]);
Parametry
cFunctions
[v] Počet funkcí, které se mají znovu zkompilovat.
moduleIds
[v] Určuje moduleId
část párů (module
, methodDef
), které identifikují funkce, které se mají znovu zkompilovat.
methodIds
[v] Určuje methodId
část párů (module
, methodDef
), které identifikují funkce, které se mají znovu zkompilovat.
Návratová hodnota
Tato metoda vrátí následující konkrétní hodnoty HRESULT a také chyby HRESULT, které značí selhání metody.
HRESULT | Description |
---|---|
S_OK | Byl proveden pokus o označení všech metod pro rekompilace JIT. Profiler musí implementovat ICorProfilerCallback4::ReJITError metoda určit, které metody byly úspěšně označeny pro jit rekompilace. |
CORPROF_E_CALLBACK4_REQUIRED | Profiler musí implementovat ICorProfilerCallback4 rozhraní, aby toto volání bylo podporováno. |
CORPROF_E_REJIT_NOT_ENABLED | Rekompilace JIT nebyla povolena. Je nutné povolit jit rekompilace během inicializace pomocí ICorProfilerInfo::SetEventMask metoda nastavit COR_PRF_ENABLE_REJIT příznak. |
E_INVALIDARG | cFunctions je 0 nebo moduleIds methodIds je NULL . |
E_OUTOFMEMORY | Modul CLR nemohl požadavek dokončit, protože mu došla paměť. |
Poznámky
Volejte RequestReJIT
, aby modul runtime překompilovat zadanou sadu funkcí. Profiler kódu pak může použít ICorProfilerFunctionControl rozhraní k úpravě kódu, který je generován při rekompilování funkcí. To nemá vliv na aktuálně spouštěné funkce, pouze na budoucí vyvolání funkce. Pokud byla některá ze zadaných funkcí dříve překompilována pomocí JIT, je požadavek na rekompilaci ekvivalentní k vrácení a opětovné kompilaci funkce. Aby se zachovala reverzibilita, kompilátor JIT zkompiluje původní verzi funkce, bere při vkládání rozhodnutí pouze původní verze volaných. Když kompilátor JIT znovu zkompiluje funkci, bere v úvahu aktuální verze (znovu zkompilované nebo původní) volaných pro vložení.
Profiler obvykle volá RequestReJIT
jako odpověď na vstup uživatele, který požaduje, aby profiler instrumentovat jednu nebo více metod. RequestReJIT
obvykle pozastaví modul runtime, aby mohl provést část své práce, a může potenciálně aktivovat uvolňování paměti. Profiler by proto měl volat RequestReJIT
z vlákna, které vytvořil dříve, a ne z vlákna vytvořeného modulem CLR, které aktuálně spouští zpětné volání profileru.
Požadavky
Platformy: Viz Požadavky na systém.
Záhlaví: CorProf.idl, CorProf.h
Knihovny: CorGuids.lib
Verze rozhraní .NET Framework: K dispozici od verze 4.5