JavaScript V8 создание и использование скрытых классов

95
15 сентября 2019, 01:20

Всем привет! Возник вопрос по поводу работы V8. Вот предположим мы создали объект какой-то и для него создалась цепочка скрытых классов. Правильно ли я понимаю, что всю необходимую информацию для работы с объектом уже будет содержать последний скрытый класс и предыдущая цепочка скрытых классов нам нужна просто для того, чтобы при наличии похожих объектов у них создавались одинаковые скрытые классы, что позволяло бы производить дополнительную оптимизацию?

Answer 1

Сам вопрос задал, сам на него и нашел ответ. Когда идет работа с объектом (например чтение какого-то свойства из него), то сначала мы обратимся к последнему скрытому классу и если в нем не будет находиться нужное нам свойство (каждый элемент в цепочке скрытых классов хранит в себе только одно свойство, которое мы задали), то мы обратимся к словарю этой цепочки, который хранит информацию о том, в каком скрытом классе в цепочке - находится нужное нам свойство и мы сможем к нему перейти. Скрытый класс не хранит все предыдущие свойства с целью экономии памяти. Такая цепочка скрытых классов даст нам возможность понять, что два разных объекта могут относиться к одному и тому же скрытому классу, а это в свою очередь даст нам возможность воспользоваться инлайн кэшами.

Инлайн кэши - это отдельная тема. Тут нам придется заглянуть в байткод. Если мы его прочитаем, то при получении какого-то свойства из объекта - будет вызвана соответствующая инструкция. Встроенный в эту инструкцию инлайн кэш запоминает то, к какой цепочке относится объект, у которого мы искали нужное нам свойство и запоминает смещение этого свойства. Если в будущем мы захотим у другого объекта, который относится к той же цепочки скрытого класса получить такое же свойство, то инструкция посмотрит в инлайн кэш и увидит, что значение этого свойства хранится по такому-то смещению и мы сможем быстро получить к нему доступ. Все этим оптимизации довольно сильно ускоряют javascript

READ ALSO
Ajax Загрузка Пагинация

Ajax Загрузка Пагинация

Есть Код на Jquery

78
Скрипт читает только одну форму на сайте

Скрипт читает только одну форму на сайте

Сегодня хотел бы обратится к тем, кто знает что делать со скриптом или формой, чтобы при использовании скрипта читалась не только первая формаВкратце:...

113
Не закрывается блок при нажатии мимо блока на IPAD

Не закрывается блок при нажатии мимо блока на IPAD

есть проблема на устройстве Ipad, не закрывается блок при клике мимо него, вот верстка на хостинге http://questbox7liemstar

84
Как сделать что бы кнопка нажималась один раз, а так же вывести доп поле с % [закрыт]

Как сделать что бы кнопка нажималась один раз, а так же вывести доп поле с % [закрыт]

Помогите решить проблему, так как в js не шарюСуть задачи такова

100