Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Mengembalikan enumerator ke semua metode yang didefinisikan dalam modul NGen tertentu dan menjadikan sebaris metode tertentu.
Sintaks
HRESULT EnumNgenModuleMethodsInliningThisMethod(
[in] ModuleID inlinersModuleId,
[in] ModuleID inlineeModuleId,
[in] mdMethodDef inlineeMethodId,
[out] BOOL *incompleteData,
[out] ICorProfilerMethodEnum** ppEnum
);
Parameter
inlinersModuleId
[in] Pengidentifikasi modul NGen.
inlineeModuleId
[in] Pengidentifikasi modul yang mendefinisikan inlineeMethodId. Lihat bagian Keterangan untuk informasi selengkapnya.
inlineeMethodId
[in] Pengidentifikasi metode yang dijadikan sebaris. Lihat bagian Keterangan untuk informasi selengkapnya.
incompleteData
[out] Bendera yang menunjukkan apakah ppEnum berisi semua metode yang menjadikan sebaris metode tertentu. Lihat bagian Keterangan untuk informasi selengkapnya.
ppEnum
[out] Penunjuk ke alamat enumerator
Keterangan
inlineeModuleId dan inlineeMethodId bersama-sama membentuk pengidentifikasi lengkap untuk metode yang mungkin dijadikan sebaris. Misalnya, asumsikan modul A mendefinisikan metode Simple.Add:
Simple.Add(int a, int b)
{ return a + b; }
dan modul B mendefinisikan Fancy.AddTwice:
Fancy.AddTwice(int a, int b)
{ return Simple.Add(a,b) + Simple.Add(a,b); }
Mari kita asumsikan juga bahwa Fancy.AddTwice menjadikan sebaris panggilan ke SimpleAdd. Profiler dapat menggunakan enumerator ini untuk menemukan semua metode yang ditentukan di modul B yang menjadikan sebaris Simple.Add, dan hasilnya akan menghitung AddTwice.
inlineeModuleId adalah pengidentifikasi modul A, dan inlineeMethodId merupakan pengidentifikasi Simple.Add(int a, int b).
Jika incompleteData true setelah fungsi kembali, enumerator tidak berisi semua metode yang inlining metode tertentu. Hal ini dapat terjadi saat satu atau lebih dependensi langsung atau tidak langsung dari modul yang menjadikannya sebaris belum dimuat. Jika profiler membutuhkan data yang akurat, data tersebut harus dicoba kembali nanti saat lebih banyak modul dimuat, sebaiknya pada setiap beban modul.
Metode EnumNgenModuleMethodsInliningThisMethod dapat digunakan untuk mengatasi batasan pembuatan sebaris untuk ReJIT. ReJIT memungkinkan profiler mengubah penerapan metode dan kemudian membuat kode baru untuk hal tersebut dengan cepat. Misalnya, kita dapat mengubah Simple.Add sebagai berikut:
Simple.Add(int a, int b)
{ return 42; }
Namun karena Fancy.AddTwice telah menjadikan Simple.Add sebaris, metode terus memiliki perilaku yang sama seperti sebelumnya. Untuk mengatasi batasan itu, pemanggil harus mencari semua metode di semua modul yang menjadikan Simple.Add sebaris dan yang menggunakan ICorProfilerInfo5::RequestRejit pada masing-masing metode tersebut. Saat metode dikompilasi ulang, metode akan memiliki perilaku baru Simple.Add alih-alih perilaku lama.
Persyaratan
Platform: Lihat Persyaratan Sistem.
Header: CorProf.idl, CorProf.h
Pustaka: CorGuids.lib
Versi .NET Framework: Tersedia mulai dari 4.6