Udostępnij za pośrednictwem


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 moduleIdsmethodIds ma NULLwartość .
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

Zobacz też