LINUX.ORG.RU

История изменений

Исправление SZT, (текущая версия) :

Не могу, и alloca() тут нет :(

Попробуй сделай #define alloca(x) __builtin_alloca(x)
Ну и VLA можно использовать.

У меня есть перед глазами порты на другие архитектуры, где многопоточность сделана похожим образом, только там стек выделяется вручную через malloc и потом сканируется gc.

А почему нельзя сделать свой malloc поверх глобального массива, или взять готовую реализацию?

Этой штуке надо просканировать все слова в стеке, проверить каждое из них по словарю - не указатель ли это на что-то выделенное через аллокатор, и если это оно, то попытаться собрать мусор.

Блин, это тупизм какой-то, ведь совершенно не ясно, является ли такая-то ерунда в стеке каким-то числом или структурой, которая по случайному стечению побайтно совпала с указателем на что-то, или это именно указатель. Да и сам указатель мог быть не в стеке, а где-нибудь в регистрах, или быть успешно чем-то перезаписан...

Исправление SZT, :

Не могу, и alloca() тут нет :(

Попробуй сделай #define alloca(x) __builtin_alloca(x)
Ну и VLA можно использовать.

У меня есть перед глазами порты на другие архитектуры, где многопоточность сделана похожим образом, только там стек выделяется вручную через malloc и потом сканируется gc.

А почему нельзя сделать свой malloc поверх глобального массива, или взять готовую реализацию?

Этой штуке надо просканировать все слова в стеке, проверить каждое из них по словарю - не указатель ли это на что-то выделенное через аллокатор, и если это оно, то попытаться собрать мусор.

Блин, это тупизм какой-то, ведь совершенно не ясно, является ли такая-то ерунда в стеке каким-то числом или структурой, которая по случайному стечению побайтно совпала с указателем на что-то, или это именно указатель.

Исходная версия SZT, :

Не могу, и alloca() тут нет :(

Попробуй сделай #define alloca(x) __builtin_alloca(x)
Ну и VLA можно использовать.

У меня есть перед глазами порты на другие архитектуры, где многопоточность сделана похожим образом, только там стек выделяется вручную через malloc и потом сканируется gc.

А почему нельзя сделать свой malloc поверх глобального массива, или взять готовую реализацию?

Этой штуке надо просканировать все слова в стеке, проверить каждое из них по словарю - не указатель ли это на что-то выделенное через аллокатор, и если это оно, то попытаться собрать мусор.

Блин, это тупизм какой-то, ведь совершенно не ясно, является ли такая-то ерунда в стеке каким-то числом или структурой, которая по случайному стечению побайтно совпала с указателем на что-то, или именно указателем.