Freigeben über


ICorProfilerInfo4::RequestReJIT-Methode

Fordert eine JIT-Neukompilierung aller Instanzen der angegebenen Funktionen an.

Syntax

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

Parameter

cFunctions
[in] Die Anzahl der neu zu kompilierenden Funktionen.

moduleIds
[in] Gibt den moduleId-Teil der (module, methodDef)-Paare an, mit denen die neu zu kompilierenden Funktionen identifiziert werden.

methodIds
[in] Gibt den methodId-Teil der (module, methodDef)-Paare an, mit denen die neu zu kompilierenden Funktionen identifiziert werden.

Rückgabewert

Diese Methode gibt die folgenden spezifischen HRESULTs sowie HRESULT-Fehler zurück, die Methodenfehler anzeigen.

HRESULT BESCHREIBUNG
S_OK Es wurde versucht, alle Methoden für die JIT-Neukompilierung zu markieren. Der Profiler muss die ICorProfilerCallback4::ReJITError-Methode implementieren, um zu bestimmen, welche Methoden erfolgreich für die JIT-Neukompilierung markiert wurden.
CORPROF_E_CALLBACK4_REQUIRED Der Profiler muss die ICorProfilerCallback4-Schnittstelle implementieren, damit dieser Aufruf unterstützt wird.
CORPROF_E_REJIT_NOT_ENABLED Die JIT-Neukompilierung wurde nicht aktiviert. Sie müssen die JIT-Neukompilierung während der Initialisierung mithilfe der ICorProfilerInfo:: SetEventMask-Methode aktivieren, um das COR_PRF_ENABLE_REJIT-Flag festzulegen.
E_INVALIDARG cFunctions ist 0, oder moduleIds oder methodIds ist NULL.
E_OUTOFMEMORY Die CLR konnte die Anforderung nicht abschließen, da nicht genügend Arbeitsspeicher vorhanden war.

Bemerkungen

Rufen Sie RequestReJIT auf, damit die Common Language Runtime einen angegebenen Satz von Funktionen neu kompiliert. Ein Codeprofiler kann dann die ICorProfilerFunctionControl-Schnittstelle verwenden, um den Code anzupassen, der bei der Neukompilierung der Funktionen generiert wird. Dies wirkt sich nicht auf derzeit ausgeführte Funktionen, sondern nur auf zukünftige Funktionsaufrufe aus. Wenn eine der angegebenen Funktionen bereits zuvor erneut JIT-kompiliert wurde, entspricht das Anfordern einer Neukompilierung dem Zurücksetzen und erneuten Kompilieren der Funktion. Um die Umkehrbarkeit zu bewahren, berücksichtigt der JIT-Compiler beim Kompilieren der ursprünglichen Version einer Funktion nur die ursprünglichen Versionen der Aufgerufenen bei Entscheidungen zum Inlining. Wenn der JIT-Compiler eine Funktion neu kompiliert, berücksichtigt er die aktuellen Versionen (erneut kompilierte oder ursprüngliche Versionen) der Aufgerufenen für das Inlining.

Ein Profiler ruft in der Regel RequestReJIT als Reaktion auf eine Benutzereingabe auf, mit der angefordert wird, dass der Profiler eine oder mehrere Methoden instrumentiert. RequestReJIT hält normalerweise die Common Language Runtime an, um einige Aufgaben auszuführen, und kann möglicherweise eine Garbage Collection auslösen. Daher sollte der Profiler RequestReJIT aus einem zuvor erstellten Thread aufrufen und nicht aus einem durch die CLR erstellten Thread, der aktuell einen Profilerrückruf ausführt.

Anforderungen

Plattformen: Informationen finden Sie unter Systemanforderungen.

Header: CorProf.idl, CorProf.h

Bibliothek: CorGuids.lib

.NET Framework-Versionen: Seit Version 4.5 verfügbar.

Siehe auch