Size: a a a

2021 May 28

К

Константин in javascript_ru
ну вот.
1 - выхлоп AOT транслятора. мы не можем его юзать, он дико медленный и генерит без привязки к рантайму.
2 - оригинальный байткод
3 - что мы нагенерили
источник

AA

Anton Antonov in javascript_ru
оно же совсем только глазами отлаживается?
источник

К

Константин in javascript_ru
Ну в большенстве случаев да.
Ну не, там есть чеки на уровне компилятора, когда вообще что-то сломалось
источник

К

Константин in javascript_ru
ну и рантайм краши со стактрейсом
источник

К

Константин in javascript_ru
но у нас долго была бага из-за разницы операторов
источник

К

Константин in javascript_ru
leq (less or equal) и  ng (not greater) вроде и похожи, но нет
источник

К

Константин in javascript_ru
там разное поведение на NaN
источник

AA

Anton Antonov in javascript_ru
это чьи операторы?
источник

К

Константин in javascript_ru
машины
источник

К

Константин in javascript_ru
источник

К

Константин in javascript_ru
Кто-то был когда-то умный, и объединил инструкции в одну
источник

К

Константин in javascript_ru
это аукнулось через 3 года
источник

К

Константин in javascript_ru
и я часов 20 искал баг
источник

К

Константин in javascript_ru
просто там так случилось, что в одном месте была проверка вида (obj > 0)
источник

К

Константин in javascript_ru
obj - объект.
источник

AA

Anton Antonov in javascript_ru
а правда, в чем разница?
источник

AA

Anton Antonov in javascript_ru
leq / ng
источник

AA

Anton Antonov in javascript_ru
или они специальтно разные, чтобы по разному Nan или что то еще обрабатывать?
источник

К

Константин in javascript_ru
да, для этого
источник

К

Константин in javascript_ru
leq, (Nan <= 10) = false, !(NaN > 10) == true
источник