Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
для таких оптимизаций, как вычисление инвариантов циклов, вынесение общих подвыражений и кода в ветвлениях, последовательное распределение регистров и встраивание.
В случае, если результирующий код не будет быстрее, есть возможность вернуться к выполнению кода, полученного базовым компилятором.
if not (object obj has field x by offs y) then deoptimize; v = *(addressof(obj) + y)
if (object obj has field x by offs y) then v = *(addressof(obj) + y) ; inlined cache for common case else GenericLoadProperty(obj, 'x') ; call runtime function end
v = *(addressof(obj) + y) верен только в предположениях относительно «типа» obj. проверка if not (object obj has field x by offs y) then deoptimize; называется guard'ом, она проверяет корректность предположений. if then else end в коде. Ведь после end нельзя было сказать, какая ветвь исполнилась. несколько инстансов на один процесс — пожалуйста, с изолятамиА они умеют между ядрами процессора расползаться? В смысле, если я запущу несколько инстансов Node или еще чего то в этих изолятах на многопроцессорной машине, то у меня все ядра загрузятся или только одно?
Новая версия V8 будет на 50% быстрее