Size: a a a

WebAssembly — русскоговорящее сообщество

2020 July 28

К

Константин in WebAssembly — русскоговорящее сообщество
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
cevek
а как кстати делается проверка что ты не выходишь за границу памяти? неужто на каждое обращение к линейной памяти под капотом делается проверка?
с помощью guard page
источник

SK

Slava Kuzmich in WebAssembly — русскоговорящее сообщество
Mikhail Voronov
с помощью guard page
не знаешь где можно про это почитать? как это можно сделать если есть несколько инстансов Wasm в одном потоке?
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Константин
По этому мне Макс сказал везде напихать unchecked в AS
Это наши in-house проверки) wasm vm проверяет лишь границы выделенной линейной памяти
источник

lp

lil pep in WebAssembly — русскоговорящее сообщество
Slava Kuzmich
не знаешь где можно про это почитать? как это можно сделать если есть несколько инстансов Wasm в одном потоке?
google "PLDI 2017 webassembly "
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
guard page может разное называться, почти все вм маппят (но не коммитят) регион памяти сразу за heap, доступ к которому вызывает SIGSEGV
источник

К

Константин in WebAssembly — русскоговорящее сообщество
MaxGraey
Это наши in-house проверки) wasm vm проверяет лишь границы выделенной линейной памяти
Ну васму похер, у него одна большая память же.
Рантайму нет
источник

К

Константин in WebAssembly — русскоговорящее сообщество
Я бы не хотел получить битый класс, когда за размеры массива ушёл, который вообще хз где .
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Константин
Ну васму похер, у него одна большая память же.
Рантайму нет
ну да, вот поэтому и нужно проверять гранулированно, на уровне массива. Вообще в дальнейшем оптимизатор сам будет расставлять unchecked там где нужно (bounds check ellimination)
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
Slava Kuzmich
не знаешь где можно про это почитать? как это можно сделать если есть несколько инстансов Wasm в одном потоке?
я только в сорцах вм (в том числе и в v8) видел, но и вообще это достаточно известная техника. Вроде это никак не мешает держать несколько инстансов вм в памяти, потому что доп память под GP реально не выделяется
источник

MO

Mar Ort in WebAssembly — русскоговорящее сообщество
кажется я глупость написал 😔
источник

M

MaxGraey in WebAssembly — русскоговорящее сообщество
Да никто массив и не выравнивает. Это Констанитин запутал вас видимо)
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
а что мешает весь wasm heap выделить единым куском
источник

К

Константин in WebAssembly — русскоговорящее сообщество
Я не говорил ничего про выравнивания..
источник

К

Константин in WebAssembly — русскоговорящее сообщество
Mikhail Voronov
с помощью guard page
Это все вот:)
источник

К

Константин in WebAssembly — русскоговорящее сообщество
Mikhail Voronov
а что мешает весь wasm heap выделить единым куском
Оно же так и есть же
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
Mikhail Voronov
я только в сорцах вм (в том числе и в v8) видел, но и вообще это достаточно известная техника. Вроде это никак не мешает держать несколько инстансов вм в памяти, потому что доп память под GP реально не выделяется
т.е. в user-space amd64 заведомо достаточно памяти под много инстансов с маппингом доп памяти
источник

MV

Mikhail Voronov in WebAssembly — русскоговорящее сообщество
Константин
Это все вот:)
ну простите
источник

К

Константин in WebAssembly — русскоговорящее сообщество
Или на все инстанса разом?
источник

К

Константин in WebAssembly — русскоговорящее сообщество
Не безопасно
источник