Вперед: Литература
Вверх: Приложение Б. Псевдокод системы
Назад: Организация вызовов
  Содержание
Когда динамический модуль вызывает метод getslot, происходит
следующее:
- проверяется, был ли вызов осуществлен с ручным вычислением параметров (у объекта
класса Module свойство
_MANUAL выставлено в единицу), если с
автоматическим, то происходит чтение из хеша с именем _SLOT и все,
- иначе требуется ручное вычисление. Тогда из стека вызовов
извлекается ссылка на объект Module вызвавшего класса, и для этого
объекта вызывается обработчик команд виртуальной машины. Как
дополнительный аргумент ему передается номер аргумента в таблице.
Полученный результат возвращается методом getslot,
- когда обработчик завершает вычислять аргумент, он записывает
вычисленное значение в хеш с именем
_SLOT (чтобы не вычислять аргумент
повторно); в свою очередь, счетчик команд возвращается к вызову callm
чтобы быть готовым обработать следующий запрос на вычисление аргумента
|