Call graf (juga dikenal sebagai multigraf call) adalah grafik aliran
kontrol, yang mewakili hubungan call antara subrutin dalam program komputer. Setiap
node mewakili suatu prosedur dan setiap tepi (f, g) menunjukkan bahwa prosedur
f memanggil prosedur g. Dengan demikian, siklus dalam grafik menunjukkan
panggilan prosedur rekursif.
Call graf bisa dinamis atau statis. Call graf
dinamis adalah catatan eksekusi program, misalnya sebagai output oleh profiler.
Dengan demikian, call graf dinamis dapat tepat, tetapi hanya menggambarkan satu
kali program. Call graf statis adalah call graf yang dimaksudkan untuk mewakili
setiap kemungkinan pelaksanaan program. Call graf statis yang tepat adalah
masalah yang tidak dapat diputuskan, sehingga algoritma call graf statis umumnya
terlalu banyak dinilai. Artinya, setiap hubungan panggilan yang terjadi
diwakili dalam grafik, dan mungkin juga beberapa hubungan panggilan yang tidak
akan pernah terjadi dalam menjalankan program yang sebenarnya.
Call graf dapat didefinisikan untuk mewakili
berbagai tingkat presisi. Call graf yang lebih tepat lebih mendekati perilaku
program nyata, dengan biaya lebih lama untuk menghitung dan lebih banyak memori
untuk disimpan. Call graf yang paling tepat sepenuhnya peka konteks, yang
berarti bahwa untuk setiap prosedur, grafik berisi simpul terpisah untuk setiap
tumpukan panggilan yang prosedurnya dapat diaktifkan. Call graf
konteks-sensitif sepenuhnya disebut pohon konteks panggilan. Ini dapat dihitung
secara dinamis dengan mudah, meskipun mungkin membutuhkan banyak memori.
Memanggil konteks pohon biasanya tidak dihitung secara statis, karena akan
terlalu lama untuk program besar. Grafik panggilan paling tidak akurat adalah
tidak peka konteks, yang berarti bahwa hanya ada satu simpul untuk setiap
prosedur.
Dengan bahasa yang menampilkan pengiriman
dinamis, seperti Java dan C ++, menghitung grafik call statis justru membutuhkan hasil analisis
alias. [5] Sebaliknya, menghitung aliasing yang tepat membutuhkan grafik call .
Banyak sistem analisis statis menyelesaikan kemunduran tak terbatas yang tampak
dengan menghitung keduanya secara bersamaan.
Komentar
Posting Komentar