Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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