Aracılığıyla paylaş


ICorProfilerInfo6::EnumNgenModuleMethodsInliningThisMethod Yöntemi

Belirli bir NGen modülünde tanımlanan tüm yöntemlere bir numaralandırıcı ve belirli bir yöntemin satır içi değerini döndürür.

Sözdizimi

HRESULT EnumNgenModuleMethodsInliningThisMethod(
        [in] ModuleID inlinersModuleId,
        [in] ModuleID inlineeModuleId,
        [in] mdMethodDef inlineeMethodId,
        [out] BOOL *incompleteData,
        [out] ICorProfilerMethodEnum** ppEnum
);

Parametreler

inlinersModuleId
[in] NGen modülünün tanımlayıcısı.

inlineeModuleId
[in] tanımlayan inlineeMethodIdbir modülün tanımlayıcısı. Daha fazla bilgi için Açıklamalar bölümüne bakın.

inlineeMethodId
[in] Bir inlined yönteminin tanımlayıcısı. Daha fazla bilgi için Açıklamalar bölümüne bakın.

incompleteData
[out] Belirli bir yöntemin satır içine alındığı tüm yöntemleri içerip içermediğini ppEnum gösteren bir bayrak. Daha fazla bilgi için Açıklamalar bölümüne bakın.

ppEnum
[out] Numaralandırıcının adresini gösteren işaretçi

Açıklamalar

inlineeModuleId ve inlineeMethodId birlikte, inlined olabilecek yöntemin tam tanımlayıcısını oluşturur. Örneğin, modülünün A bir yöntemi Simple.Addtanımladığı varsayılır:

Simple.Add(int a, int b)
{ return a + b; }

ve B modülü tanımlar Fancy.AddTwice:

Fancy.AddTwice(int a, int b)
{ return Simple.Add(a,b) + Simple.Add(a,b); }

Ayrıca çağrısının SimpleAddsatır içinde olduğunu Fancy.AddTwice varsayalım. Profil oluşturucu, B modülünde tanımlanan ve satır içi Simple.Addolarak numaralandırılan tüm yöntemleri bulmak için bu numaralandırıcıyı AddTwicekullanabilir. inlineeModuleId , modülünün Atanımlayıcısı ve inlineeMethodId öğesinin tanımlayıcısıdır Simple.Add(int a, int b).

incompleteData İşlev döndürüldüğünde true ise, numaralandırıcı belirli bir yöntemin içini çizen tüm yöntemleri içermez. Inliners modülünün bir veya daha fazla doğrudan veya dolaylı bağımlılığı henüz yüklenmediğinde bu durum oluşabilir. Profil oluşturucu doğru verilere ihtiyaç duyuyorsa daha sonra daha fazla modül yüklendiğinde (tercihen her modül yükünde) yeniden denemelidir.

yöntemi, EnumNgenModuleMethodsInliningThisMethod ReJIT için inlining sınırlamalarını geçici olarak çözmek için kullanılabilir. ReJIT, profil oluşturucunun bir yöntemin uygulamasını değiştirmesine ve ardından anında bunun için yeni kod oluşturmasına olanak tanır. Örneğin, aşağıdaki gibi değişebiliriz Simple.Add :

Simple.Add(int a, int b)
{ return 42; }

Ancak zaten inlined Simple.AddolduğundanFancy.AddTwice, öncekiyle aynı davranışa sahip devam eder. Bu sınırlamayı geçici olarak çözmek için çağıranın satır içi Simple.Add ve bu yöntemlerin her birinde kullanılan ICorProfilerInfo5::RequestRejit tüm modüllerdeki tüm yöntemleri araması gerekir. Yöntemler yeniden derlendiğinde, eski davranış yerine yeni davranışına Simple.Add sahip olurlar.

Gereksinimler

Platform: Bkz. Sistem Gereksinimleri.

Üstbilgi: CorProf.idl, CorProf.h

Kitaplığı: CorGuids.lib

.NET Framework Sürümleri: 4.6 sürümünden itibaren kullanılabilir

Ayrıca bkz.