Re[8]: Web 2.0
От: vdimas Россия  
Дата: 22.11.19 22:47
Оценка:
Здравствуйте, D. Mon, Вы писали:

DM>Я не про DOM. Я про сложность нормально компилировать в wasm нативные языки с GC, т.к. нельзя сканировать стек.


Это нейтивный стек вызовов нельзя сканировать, а стек данных можно:

For this C function:

void foo() {
    int x;
    bar(&x);
}

The asm.js code looks like this:

function _foo() {
 var $x = 0, label = 0, sp = 0;
 sp = STACKTOP;
 STACKTOP = STACKTOP + 16|0; if ((STACKTOP|0) >= (STACK_MAX|0)) abort();
 $x = sp;
 _bar($x);
 STACKTOP = sp;return;
}


В любом случае, в чистом нейтиве бывают только пессимистичные GC, т.е. если в стеке лежат только данные — это даже еще лучше.

А если брать что-то типа .Net/Java с точным GC, то для такого GC в любом случае надо размечать фреймы стека и связывать их с метаинформацией, поэтому, отсутствие доступа к адресам возвратов мешать не должно — указатель на текущий фрейм можно протягивать как неявный аргумент любого вызова.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.