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.