Size: a a a

2020 May 31

EO

Eugene Obrezkov in Frontend UA
Ivan Tytarenko
ну я же потому и попросил “в движках” 🙂 В целом, хватит и V8, как примера
если конкретно v8 то можно пойти глянуть сорцы
на гитхабе есть зеркало
источник

IT

Ivan Tytarenko in Frontend UA
Eugene Obrezkov
если конкретно v8 то можно пойти глянуть сорцы
на гитхабе есть зеркало
ну сорцы то да. Но хотелось бы статью 🙂
источник

AS

Alexey Shvayka in Frontend UA
Ivan Tytarenko
ну сорцы то да. Но хотелось бы статью 🙂
источник

IT

Ivan Tytarenko in Frontend UA
большое спасибо!
источник

AS

Alexey Shvayka in Frontend UA
гуглятся только стремные сайты, но контент вроде ок. в jsc хеш таблица с бакетами.
источник

IT

Ivan Tytarenko in Frontend UA
> гуглятся только стремные сайты

вот я потому сюда и пришел
источник

AS

Alexey Shvayka in Frontend UA
js отличается только нормализацией ключей, SameValueZero и вот это все
источник

EO

Eugene Obrezkov in Frontend UA
у V8 своя реализация хешмапа - https://github.com/v8/v8/blob/master/src/base/hashmap.h
источник

EO

Eugene Obrezkov in Frontend UA
> // The reason we write our own hash map instead of using unordered_map in STL,
> // is that STL containers use a mutex pool on debug build, which will lead to
> // deadlock when we are using async signal handler.
источник

EO

Eugene Obrezkov in Frontend UA
и там дальше можно глянуть как они меняют capacity - https://github.com/v8/v8/blob/master/src/runtime/runtime-collections.cc#L49-L72
torque файлы для Map\Set - https://github.com/v8/v8/blob/master/src/objects/js-collection.tq#L11-L16
источник
2020 June 01

TS

Terry Sahaidak in Frontend UA
хтось може знає де можна почитати про те, що відбувається і якіі наслідки того, щоб викликати eval в JSC? cc @chicoxyzzy @shvaikalesh
источник

TS

Terry Sahaidak in Frontend UA
яка ймовірність того, що eval буде блочити потік?
источник

AS

Alexey Shvayka in Frontend UA
почитать негде, eval компилируется
источник

TS

Terry Sahaidak in Frontend UA
Alexey Shvayka
почитать негде, eval компилируется
правилно я розумію, що кожен eval парсить і компілює кожного разу? крім того, на скільки мені відомо, в результаті неможливо ніяких оптимізацій застосувати до цього коду
источник

AS

Alexey Shvayka in Frontend UA
> правилно я розумію, що кожен eval парсить і компілює кожного разу?

в большинстве случаев, нет. 1 парсинг, 1 компайл, если констант-фолдится.
источник

TS

Terry Sahaidak in Frontend UA
кейс наступний: є два потоки, в одному виконується основний жс, в ііншому — шось типу воркера.
є код, на плюсах, який спілкується з JS Context та можна з жс створити змінну, яка буде std:make_shared. відповідно з обох тредів буде до неї доступ.
якщо зі зміінними все ок, то з функціями зараз через костиль — в 1 потоці бабельом мутиться поле toString, прокидається в cpp і там вже через eval виконується в іншому потоці. підозрюю що саме ця штука тормозить зараз
источник

AS

Alexey Shvayka in Frontend UA
> крім того, на скільки мені відомо, в результаті неможливо ніяких оптимізацій застосувати до цього коду

это инфа из 2015 про кранкшафт; сейчас в jsc все тиры рабатают с eval
источник

TS

Terry Sahaidak in Frontend UA
зараз получається отакий лог евалів:
https://gist.github.com/terrysahaidak/33dcf94c83231b03063f68a83ebab165
источник

TS

Terry Sahaidak in Frontend UA
(може десятками штук виконуватисьь на кожен фрейм)
источник

AS

Alexey Shvayka in Frontend UA
а какие JITы включены? на андроиде же их вроде выключали какое-то время назад
источник