Описание тега escape-analysis

Анализ выхода определяет все места, где может быть сохранен указатель, и можно ли доказать, что время жизни указателя ограничено только текущей процедурой и / или потоком.

В теории оптимизации компилятора языка программирования escape-анализ - это метод определения динамической области действия указателей. Это связано с анализом указателя и анализом формы.

Когда переменная (или объект) выделяется в подпрограмме, указатель на переменную может переходить к другим потокам выполнения или к вызывающим подпрограммам. Если реализация использует оптимизацию хвостового вызова (обычно требуемую для функциональных языков), объекты также могут рассматриваться как экранированные для вызываемых подпрограмм. Если язык поддерживает первоклассные продолжения (как это делают Scheme и Standard ML в Нью-Джерси), части стека вызовов также могут ускользать.

Если подпрограмма выделяет объект и возвращает указатель на него, к объекту можно получить доступ из неопределенных мест в программе - указатель "сбежал". Указатели также могут экранировать, если они хранятся в глобальных переменных или других структурах данных, которые, в свою очередь, экранируют текущую процедуру.

Анализ выхода определяет все места, где может быть сохранен указатель, и можно ли доказать, что время жизни указателя ограничено только текущей процедурой и / или потоком.

Дополнительные ссылки: