Зависит от VM, т.к. реализаций JS много и они работают по разному, например Nashorn транслирует код в байт код JVM, а другие VM могут компилить код сразу в машинный, минуя байт код. Также может зависит от режима работы VM и т.д.
Примерная схема такова:
1) Парсинг исходного кода;
2) Генерация байт кода или непосредственная компиляция в машинный код;
3) В VM, которые используют JIT часто используемый байткод комплится в машинный.
Вообще VM может поступать как посчитает нужным, т.к. это никаким стандартом не контролируется, поэтому может статься, что принципы работы у того же SpiderMonkey и V8 сильно отличаются, в общем нужно разбираться конкретно.
Последний раз редактировалось kobezzza, 05.10.2014 в 19:55.
|