Dela via


ICorProfilerInfo4::RequestReJIT, metod

Begär en JIT-omkompilering av alla instanser av de angivna funktionerna.

Syntax

HRESULT RequestReJIT (  
   [in] ULONG    cFunctions,  
   [in, size_is(cFunctions)]  ModuleID    moduleIds[],  
   [in, size_is(cFunctions)]  mdMethodDef methodIds[]);  

Parametrar

cFunctions
[in] Antalet funktioner som ska kompileras om.

moduleIds
[in] Anger den moduleId del av paren (module, methodDef) som identifierar de funktioner som ska kompileras om.

methodIds
[in] Anger den methodId del av paren (module, methodDef) som identifierar de funktioner som ska kompileras om.

Returvärde

Den här metoden returnerar följande specifika HRESULT-fel samt HRESULT-fel som indikerar metodfel.

HRESULT Description
S_OK Ett försök gjordes att markera alla metoder för JIT-omkompilering. Profileraren måste implementera metoden ICorProfilerCallback4::ReJITError för att avgöra vilka metoder som har markerats för JIT-omkompilering.
CORPROF_E_CALLBACK4_REQUIRED Profileraren måste implementera gränssnittet ICorProfilerCallback4 för att det här anropet ska stödjas.
CORPROF_E_REJIT_NOT_ENABLED JIT-omkompilering har inte aktiverats. Du måste aktivera JIT-omkompilering under initieringen med hjälp av metoden ICorProfilerInfo::SetEventMask för att ange COR_PRF_ENABLE_REJIT flaggan.
E_INVALIDARG cFunctions är 0 eller moduleIdsmethodIds är NULL.
E_OUTOFMEMORY CLR kunde inte slutföra begäran eftersom det tog slut på minne.

Kommentarer

Anropa RequestReJIT för att köra om kompilera om en angiven uppsättning funktioner. En kodprofilerare kan sedan använda gränssnittet ICorProfilerFunctionControl för att justera koden som genereras när funktionerna kompileras om. Detta påverkar inte funktioner som körs för närvarande, utan endast framtida funktionsanrop. Om någon av de angivna funktionerna tidigare har JIT-kompilerats om motsvarar begäran om en omkompilering att återställa och kompilera om funktionen. När JIT-kompilatorn kompilerar den ursprungliga versionen av en funktion för att bevara reversibiliteten tar den endast hänsyn till de ursprungliga versionerna av dess anropare för att ange beslut. När JIT-kompilatorn kompilerar om en funktion tar den hänsyn till de aktuella versionerna (omkompilerade eller ursprungliga) av dess anrop för inlining.

En profilerare anropar RequestReJIT vanligtvis som svar på användarindata och begär att profilerarinstrumentet en eller flera metoder. RequestReJIT pausar normalt körningen för att utföra en del av sitt arbete och kan potentiellt utlösa en skräpinsamling. Profileraren bör därför anropa RequestReJIT från en tråd som den skapade tidigare och inte från en CLR-skapad tråd som för närvarande kör ett profileraråteranrop.

Krav

Plattformar: Se Systemkrav.

Huvudet: CorProf.idl, CorProf.h

Bibliotek: CorGuids.lib

.NET Framework versioner: Tillgänglig sedan 4.5

Se även