Sdílet prostřednictvím


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 moduleIdsmethodIds 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

Viz také