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 inlineeMethodId
bir 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.Add
tanı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 SimpleAdd
satır içinde olduğunu Fancy.AddTwice
varsayalım. Profil oluşturucu, B modülünde tanımlanan ve satır içi Simple.Add
olarak numaralandırılan tüm yöntemleri bulmak için bu numaralandırıcıyı AddTwice
kullanabilir. inlineeModuleId
, modülünün A
tanı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.Add
olduğ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