Size: a a a

Compiler Development

2020 February 09

MO

Mar Ort in Compiler Development
а планирование?
источник

MO

Mar Ort in Compiler Development
я в отличие от вас могу долго примеры приводить, чего там нет, а хотелось бы
источник

E

EgorBo in Compiler Development
Mar Ort
девиртуализацию там уже сделали?
есть много видов девиртуализаций в джите: конкретных методов из горячих циклов аля EqualityComparer, GetType, есть Guarded devirtualization, есть девиртуализации из инлайнинга и когда джит может проследить переменную (благодаря сса!) все ее асайнменты
источник

E

EgorBo in Compiler Development
ну собственно я так и думал что будет названа дивиртуализация и ничего больше)
источник

E

EgorBo in Compiler Development
ой, векторизация
источник

MO

Mar Ort in Compiler Development
но уже два назвал
источник

MO

Mar Ort in Compiler Development
EgorBo
есть много видов девиртуализаций в джите: конкретных методов из горячих циклов аля EqualityComparer, GetType, есть Guarded devirtualization, есть девиртуализации из инлайнинга и когда джит может проследить переменную (благодаря сса!) все ее асайнменты
это все условные девиртуализации
источник

E

EgorBo in Compiler Development
Mar Ort
это все условные девиртуализации
в дотнете если ты не знал все методы невиртуальные подефолту, это не джава
источник

E

EgorBo in Compiler Development
нам не так нужна девиртуализация с откатом (у которой куча минусов хватает)
источник

MO

Mar Ort in Compiler Development
EgorBo
в дотнете если ты не знал все методы невиртуальные подефолту, это не джава
это как-то сильно влияет?
источник

E

EgorBo in Compiler Development
ладно убегаю, но если появится на самом деле дельное утверждение - отвечу :) исходники джита я хорошо знаю
источник

MO

Mar Ort in Compiler Development
то, что вы описали, скорее протяжка типов, а не девиртуализация, хотя вопрос конечно терминологический
источник

MO

Mar Ort in Compiler Development
EgorBo
нам не так нужна девиртуализация с откатом (у которой куча минусов хватает)
А в чем там минусы, кстати?
Вот например главный минус в том, что вы описали, это безобразно раздувающийся код, который сильно ограничивает дальнейшие оптимизации, делая инлайнинг скорее вредным.
источник

MO

Mar Ort in Compiler Development
А в силу отсутствия отката как явления, необходимо компилировать все холодные пути в т.ч.
источник

E

EgorBo in Compiler Development
джит делает очень много всего, у него есть фаза пипхол оптимизаций, циклов (есть луп хоистинг, немного анролиг, новые скоро подъедут), потом он всё это переводит в SSA форму и проводит сложные оптимизации аля Value Numbering для CSE, assert propogation и удаления баунд чеков

когда я услышал что джит просто переводит ил в асм я сразу понял что ты знаком слишком поверхностно ну или это популярный психологический прием что-то негативное заявить дабы в глазах обществ выглядить специалистом, не надо так :-)
источник

I

Ilmir in Compiler Development
EgorBo
да нет, есть андроид
Я имел в виду, что у вас нет виртуальной машины, которая вшита в девайс и не может быть обновлена, из-за чего баги в ее старых версиях надо обходить во время генерации байткода или его постпроцессинга, которая не поддерживает последние версии байкода, которая не настолько производительна, ну и тому подобное.
источник

E

EgorBo in Compiler Development
Ilmir
Я имел в виду, что у вас нет виртуальной машины, которая вшита в девайс и не может быть обновлена, из-за чего баги в ее старых версиях надо обходить во время генерации байткода или его постпроцессинга, которая не поддерживает последние версии байкода, которая не настолько производительна, ну и тому подобное.
вот поэтому эпл даже для родной платформы в своем ЯП тягает за собой рантайм до сих пор :))
источник

E

EgorBo in Compiler Development
хотя вроде к 5 или какой там версии устаканили аби
источник

MO

Mar Ort in Compiler Development
EgorBo
джит делает очень много всего, у него есть фаза пипхол оптимизаций, циклов (есть луп хоистинг, немного анролиг, новые скоро подъедут), потом он всё это переводит в SSA форму и проводит сложные оптимизации аля Value Numbering для CSE, assert propogation и удаления баунд чеков

когда я услышал что джит просто переводит ил в асм я сразу понял что ты знаком слишком поверхностно ну или это популярный психологический прием что-то негативное заявить дабы в глазах обществ выглядить специалистом, не надо так :-)
То, что вы описываете правда, там действительно все это есть. Вопрос главный в том, работает ли это на реальном коде или только на синтетических бенямарках, которые пишут разработчики.
источник

FO

FORTRAN ONE LOVE in Compiler Development
EgorBo
оптимизаций там вагон, понятное дело не как в ллвм, но я сходу не могу назвать каких-то, которые прям сильно не зватает
log(sqrt(x)) -> 0.5*log(x) :)
источник