Size: a a a

Compiler Development

2020 December 01

M

MrSmith in Compiler Development
А регионы про что?
источник

IB

Ivan Boldyrev in Compiler Development
MrSmith
А регионы про что?
Автоматическое управление памятью, основанное на анализе программы.
источник

M

MaxGraey in Compiler Development
MrSmith
А регионы про что?
Если в контексте IR, то это области / блоки аггрегирующие иерархические структуры по скоупу или любым другим группирующим критериям. Обычно используются для урощения анализа и / или сохранения и переноса оригинального порядка подструктуры после IR в другой IR. Для CPS -> SSA трансформации это особо важно, так как не всегда можно однозначно преобразовать CPS в SSA
источник

BD

Berkus Decker in Compiler Development
Peter Sovietov
А вы знали, что старинный компилятор Turbo Pascal имел собственный IR, в отличие от решений, вдохновленных Виртом?
Один исследователь разобрал ассемблерный код tpc.exe, перевел его на Паскаль и выложил в интернете.
Я прекрасно понимаю, что любителей археологии в области компиляторных технологий гораздо меньше, чем, скажем, исследователей компьютерных ретроигр, но, все же :)
http://direct.turbopascal.org/
Спасибо, это я оч люблю. Как расковыривание vm от Another World.
источник

BD

Berkus Decker in Compiler Development
MaxGraey
Очень странное решение у LLVM все еще использовать аж 4 не парируемые ALU операции там, где можно обойтись всего одним imul)
https://godbolt.org/z/zPjedG

Кто знает почему так?
А таргет какой стоит? С телефона годболт открывать больно
источник

M

MaxGraey in Compiler Development
Berkus Decker
А таргет какой стоит? С телефона годболт открывать больно
x64, -O2 -march=native
источник

BD

Berkus Decker in Compiler Development
EgorBo
А знаком тут кто с Kotlin-Native, мне интересно насколько они счастливы с ref-counted GC и как борятся с цикличными ссылками? А то вот тут смотрю https://github.com/JetBrains/kotlin-native/blob/master/runtime/src/main/kotlin/kotlin/native/internal/GC.kt#L11-L14 - это что, два гц по сути?
Они для натива практически отдельную эмуляцию вм запилили д
источник

BD

Berkus Decker in Compiler Development
MaxGraey
x64, -O2 -march=native
А нативный это какой именно? Может попробовать поиграться поставить что то явно
источник

M

MaxGraey in Compiler Development
Berkus Decker
А нативный это какой именно? Может попробовать поиграться поставить что то явно
Нативный не знаю, skylare или haswell наверное. Там дело в том, что это абсолютно не влияет. Для generic тоже самое
источник

BD

Berkus Decker in Compiler Development
Peter Sovietov
А вы знали, что старинный компилятор Turbo Pascal имел собственный IR, в отличие от решений, вдохновленных Виртом?
Один исследователь разобрал ассемблерный код tpc.exe, перевел его на Паскаль и выложил в интернете.
Я прекрасно понимаю, что любителей археологии в области компиляторных технологий гораздо меньше, чем, скажем, исследователей компьютерных ретроигр, но, все же :)
http://direct.turbopascal.org/
Забавный ir
источник

C

Charm in Compiler Development
EgorBo
А знаком тут кто с Kotlin-Native, мне интересно насколько они счастливы с ref-counted GC и как борятся с цикличными ссылками? А то вот тут смотрю https://github.com/JetBrains/kotlin-native/blob/master/runtime/src/main/kotlin/kotlin/native/internal/GC.kt#L11-L14 - это что, два гц по сути?
Ну самый простой способ побороться с циклами-иногда запускать трассирующий гц, поэтому выходит их два
источник

MO

Mar Ort in Compiler Development
Charm
Ну самый простой способ побороться с циклами-иногда запускать трассирующий гц, поэтому выходит их два
Да, примерно так там и сделано, переодически коллектор циклов запускается
источник

C

Charm in Compiler Development
Mar Ort
Да, примерно так там и сделано, переодически коллектор циклов запускается
-потом понимаешь, что каунтеры тормозят
-удаляешь
-получаешь трассирующий хороший гц
Профит!
источник

E

EgorBo in Compiler Development
спасибо за ответы, просто у нас начальник раз в месяц забегает с какой-нибудь crazy идеей, вот вчера забежал "Хочу реф-каунтед гц!!1"
источник

E

EgorBo in Compiler Development
в прошлый раз забегал с идей "а давайте на васме джит напишем"
источник

C

Charm in Compiler Development
EgorBo
спасибо за ответы, просто у нас начальник раз в месяц забегает с какой-нибудь crazy идеей, вот вчера забежал "Хочу реф-каунтед гц!!1"
Вроде бы можно натянуть язык (многое запретить) на каунтеры, а в обратную сторону сложно. Если у тебя шаренный инт между тредами ты должен пойти и честно проинкрементить волатайл
источник

H

Hirrolot in Compiler Development
у начальника хорошие грибы
источник

M

MaxGraey in Compiler Development
EgorBo
в прошлый раз забегал с идей "а давайте на васме джит напишем"
А вот это уже совсем дурная идея =) wasm совершенно не предназначен для jit)
источник

E

EgorBo in Compiler Development
MaxGraey
А вот это уже совсем дурная идея =) wasm совершенно не предназначен для jit)
почему?
источник

M

MaxGraey in Compiler Development
EgorBo
почему?
Для эффективного jit-а нужно писать в исполняемую секцию. У wasm нет такой секции с доступом под запись, только линейтая память для данных и таблица для indirect calls и все это обязано провалидируется при инстанциации, без валидации ни одна vm не рискнет запускать wasm. Так что, что бы сделать jit. придется все разбивать на куски - модули и периодически их переинстанцировать. Это очень медленно будет, кроме того не все vm поддерживают мультимодульность, для них придется делать что то вроде динамической линковки, которая вообще вряд ли адекватно реализуема сейчас) Ну или полность каждый раз создавать новый модуль (если это скажем 2 мб) то лишь одно инстанцирование + валидация займут несколько секунд а то и больше без возможности стриминга) Оно ведь пойдет мимо кэша
источник