Re[2]: [Ann] Net Allocation internals
От: Sinix  
Дата: 03.10.14 05:10
Оценка: +1
Здравствуйте, Evgeny.Panasyuk, Вы писали:

S>>* Аллокация объектов: в лучшем случае new() вместе с выделением памяти укладывается в 9 asm-инструкций

EP>Непонятно с чем связанно удивление — это много или мало?
Скорее, "если сильно постараться, то можно впихнуть, но всё равно круто"

EP>У Compacting GC выделение памяти на Happy-Path это, фактически, просто увеличение указателя на требуемый размер

Угу. Только
1. Надо ещё загрести размер типа (несложно, сборка гарантированно загружена в момент jit-компиляции).
2. Выбрать текущий буфер для аллокации (тут есть нюансы).
3. Заполнить заголовок объекта (снова несложно).

Cам код принципиально прост. Все "динамические" значения достаются по захардкоженным адресам. Нет никаких проверок на потокобезопасность, т.к. каждый поток работает со своей областью в gen0.
Но объём архитектурных решений, необходимых чтобы это "да там всё просто" работало, внушает уважение
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.