ICorProfilerInfo4::RequestReJIT — Metoda
Żąda ponownej kompilacji JIT wszystkich wystąpień określonych funkcji.
Składnia
HRESULT RequestReJIT (
[in] ULONG cFunctions,
[in, size_is(cFunctions)] ModuleID moduleIds[],
[in, size_is(cFunctions)] mdMethodDef methodIds[]);
Parametry
cFunctions
[in] Liczba funkcji do ponownego skompilowania.
moduleIds
[in] Określa moduleId
część par (module
, methodDef
), które identyfikują funkcje do ponownego skompilowania.
methodIds
[in] Określa methodId
część par (module
, methodDef
), które identyfikują funkcje do ponownego skompilowania.
Wartość zwracana
Ta metoda zwraca następujące specyficzne wartości HRESULTs, a także błędy HRESULT wskazujące niepowodzenie metody.
HRESULT | Opis |
---|---|
S_OK | Podjęto próbę oznaczenia wszystkich metod ponownej kompilacji JIT. Profiler musi zaimplementować metodę ICorProfilerCallback4::ReJITError , aby określić, które metody zostały pomyślnie oznaczone do ponownej kompilacji JIT. |
CORPROF_E_CALLBACK4_REQUIRED | Profiler musi zaimplementować interfejs ICorProfilerCallback4 , aby to wywołanie było obsługiwane. |
CORPROF_E_REJIT_NOT_ENABLED | Ponowna kompilacja trybu JIT nie została włączona. Aby ustawić flagęCOR_PRF_ENABLE_REJIT , należy włączyć ponowną kompilację trybu JIT podczas inicjowania przy użyciu metody ICorProfilerInfo::SetEventMask. |
E_INVALIDARG | cFunctions ma wartość 0 lub moduleIds methodIds ma NULL wartość . |
E_OUTOFMEMORY | ClR nie może ukończyć żądania, ponieważ zabrakło pamięci. |
Uwagi
Wywołanie RequestReJIT
metody w celu ponownego skompilowania określonego zestawu funkcji przez środowisko uruchomieniowe. Profiler kodu może następnie użyć interfejsu ICorProfilerFunctionControl , aby dostosować kod generowany podczas ponownego kompilowania funkcji. Nie ma to wpływu na aktualnie wykonywane funkcje, tylko wywołania przyszłych funkcji. Jeśli którakolwiek z określonych funkcji została wcześniej skompilowana w trybie JIT, żądanie ponownej kompilacji jest równoważne przywracaniu i ponownej kompilacji funkcji. Aby zachować odwracalność, gdy kompilator trybu JIT kompiluje oryginalną wersję funkcji, uwzględnia tylko oryginalne wersje swoich wywołań w celu podejmowania decyzji w zakresie tworzenia konspektu. Gdy kompilator trybu JIT ponownie skompiluje funkcję, uwzględnia bieżące wersje (ponownie skompilowane lub oryginalne) jego wywołań na potrzeby tworzenia podkreślenia.
Profiler zwykle wywołuje RequestReJIT
w odpowiedzi na dane wejściowe użytkownika, żądając, aby profiler instrumentować jedną lub więcej metod. RequestReJIT
zwykle zawiesza środowisko uruchomieniowe w celu wykonania niektórych zadań i może potencjalnie wyzwolić odzyskiwanie pamięci. W związku z tym profiler powinien wywołać RequestReJIT
z wcześniej utworzonego wątku, a nie z utworzonego wątku CLR, który obecnie wykonuje wywołanie zwrotne profilera.
Wymagania
Platformy: Zobacz Wymagania systemowe.
Nagłówka: CorProf.idl, CorProf.h
Biblioteki: CorGuids.lib
wersje .NET Framework: dostępne od wersji 4.5