共用方式為


ICorProfilerCallback::JITCompilationStarted 方法

通知分析工具,Just-In-Time (JIT) 編譯程式已開始編譯函式。

語法

HRESULT JITCompilationStarted(
    [in] FunctionID functionId,
    [in] BOOL       fIsSafeToBlock);

參數

functionId [in]編譯開始之函式的標識碼。

fIsSafeToBlock [in]值,指出封鎖是否會影響運行時間的作業。 如果封鎖可能會導致執行時間等候呼叫線程從這個回呼傳回,則為 true ,否則 false為 。

雖然的值 true 不會損害運行時間,但它可能會扭曲分析結果。

備註

由於運行時間處理類別建構函式的方式,可以接收多個 JITCompilationStartedICorProfilerCallback::JITCompilationFinished 對每個函式的呼叫。 例如,運行時間會啟動 JIT 編譯方法 A,但必須執行類別 B 的類別建構函式。 因此,運行時間 JIT 會編譯類別 B 的建構函式,並加以執行。 當建構函式執行時,它會呼叫方法 A,這會導致方法 A 再次編譯 JIT。 在此案例中,會停止方法 A 的第一個 JIT 編譯。 不過,JIT 編譯方法 A 的兩次嘗試都會回報 JIT 編譯事件。 如果分析工具會藉由呼叫 ICorProfilerInfo::SetILFunctionBody 方法來取代方法 A 的通用中繼語言 (CIL) 程式代碼,則必須針對這兩個事件執行此動作,但它可能會針對兩 JITCompilationStarted 者使用相同的 CIL 區塊。

如果兩個線程同時進行回呼,分析工具必須支援 JIT 回呼的順序。 例如,線程 A 會呼叫 JITCompilationStarted。 不過,在線程 A 呼叫 JITCompilationFinished之前,線程 B 會從線程 A 的JITCompilationStarted回呼呼叫 ICorProfilerCallback::ExceptionSearchFunctionEnter 與函式標識符。 函式識別碼可能尚未有效,因為分析工具尚未收到 對的呼叫 JITCompilationFinished 。 不過,在這種情況下,函式標識碼是有效的。

需求

平台:請參閱系統需求

標頭: CorProf.idl、CorProf.h

程式庫:CorGuids.lib

.NET Framework 版本: 自 2.0 起提供

另請參閱