LINUX.ORG.RU

История изменений

Исправление dave, (текущая версия) :

Скорее всего, да. Вероятно, она «вклинивается», но с некоторыми оговорками, что в вызывающей функции не происходит кеширования, что адрес старой функции не сохраняется и тому подобного.

Это можно проверить экспериментально. Сейчас написал простенький пример:

(defun f () (break) (g))
(defun g () 1)

Я запускаю f. В ответ по break вываливаются рестарты. В это время я меняю g:

(defun g () 2)

Затем продолжаю выполнение прерванной функции f. В итоге получаю ответ 2. То есть, во время выполнения функции f я переопределил функцию g, и была задействована новая версия g.

Исходная версия dave, :

Скорее всего, да. Вероятно, она «вклинивается», но с некоторыми оговорками, что в вызывающей функции не происходит кеширования, что адрес старой функции не сохраняется и тому подобного.

Это можно проверить экспериментально. Сейчас написал простенький пример:

(defun f () (break) (g))
(defun g () 1)

Я запускаю f. В ответ по break выливаются рестарты. В это время я меняю g:

(defun g () 2)

Затем продолжаю выполнение прерванной функции f. В итоге получаю ответ 2. То есть, во время выполнения функции f я переопределил функцию g, и была задействована новая версия g.