История изменений
Исправление 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 поверх глобального массива, или взять готовую реализацию?
Этой штуке надо просканировать все слова в стеке, проверить каждое из них по словарю - не указатель ли это на что-то выделенное через аллокатор, и если это оно, то попытаться собрать мусор.
Блин, это тупизм какой-то, ведь совершенно не ясно, является ли такая-то ерунда в стеке каким-то числом или структурой, которая по случайному стечению побайтно совпала с указателем на что-то, или именно указателем.