Хранятся ли локальные переменные функции генератора в стеке или куче? - PullRequest
0 голосов
/ 17 апреля 2019

В этой статье: https://wingolog.org/archives/2013/06/11/ecmascript-generators-from-a-performance-perspective, упоминается, что:

В функции генератора V8 хранит локальные переменные в куче а не в стеке.

но это также противоречит самому следующему отрывку:

Исключением из этого случая является то, когда вы уступаете, и есть временные в стеке. Напомним, в моей статье о базовой линии V8 компилятор, что полный кодекс является стековой машиной. Распределяет слоты для именованных локальных объектов, но временные значения помещаются в стек во время выполнения,

Часть, которую я не понимаю, состоит в том, что функции генератора всегда используют yield, и я бы предположил, что упомянутая в статье подвеска относится к выражению yield .

1 Ответ

2 голосов
/ 17 апреля 2019

Я думаю, что в статье отсутствует пример:

  return 12 + yield 5

В этом случае 12 должно быть выделено в стеке, а при приостановке итератора оно должно быть скопировано из стека, изатем снова в стек, когда итератор продолжается.Во втором абзаце говорится о «временных» (в нашем случае 12), а не о «переменных».

...