Кіріспе

Компиляторды оңтайландыруда, құтылу талдау - бағдарламада көрсеткішке қол жеткізуге болатын көрсеткіштердің динамикалық аясын анықтау әдісі. Ол сілтемелерді талдау және пішіндерді талдаумен байланысты. Өзгергіш (немесе объект) субпрограммада бөлінген кезде, өзгергішке сілтеме басқа орындау желілеріне немесе субпрограммаларды шақыруға қашып келуі мүмкін. Егер іске асыруда құйрық шақыруын оңтайландыру қолданылса (әдетте функционалдық тілдер үшін қажет), объектілер де шақырылған ішкі бағдарламалардан қашып жүргені ретінде қаралуы мүмкін. Егер тіл бірінші сыныпты жалғастыруды қолдайтын болса (Нью-Джерсидің Схема және Стандартты ML сияқты), қоңырау стегінің бөліктері де қашып кетуі мүмкін. Егер субпрограмма объектіні бөліп, оған меңзерді қайтарса, онда объектке бағдарламаның белгісіз орындарынан қол жеткізуге болады. Егер олар жаһандық айнымалыларда немесе басқа да дерек құрылымдарында сақталса, онда да сілтемелер қашып кетуі мүмкін, бұл өз кезегінде ағымдағы рәсімнен қашып кетеді. Escape талдау барлық көрсеткіштерді сақтауға болатын жерлерді және көрсеткіштердің өмір сүру мерзімі тек ағымдағы процедураға және/немесе желіге ғана шектелетінін дәлелдеуге болатынын анықтайды.

Іс жүзіндегі ескертулер

Нысанға бағдарланған бағдарламалау тілдерінде динамикалық компиляторлар құтылу талдауын орындау үшін өте жақсы кандидаттар болып табылады. Дәстүрлі статикалық компиляцияда әдісті ауыстырып жазу, қашуды талдау мүмкін емес етеді, өйткені кез келген шақырылған әдісті сілтемешіге қашуға мүмкіндік беретін нұсқасы ауыстырып тастауы мүмкін. Динамикалық компиляторлар ақаулықтарды талдауды жүктеме туралы қолда бар ақпаратты пайдалана отырып, және тиісті әдістерді динамикалық код жүктемесімен ауыстырған кезде талдауды қайта орындай алады.