Size: a a a

2020 March 17

E

EgorBo in pro.net
что может случится при коверсии 42.0 в лонг?
источник

IC

Ilya Chernoudov in pro.net
И jit должен выполнить checked конвертацию во время конструирования метода
источник

E

EgorBo in pro.net
понятнее не стало
источник

E

EgorBo in pro.net
хз о чем ты
источник

IC

Ilya Chernoudov in pro.net
EgorBo
хз о чем ты
Как понять, что 42 можно сконвертировать в лонг?
источник

IC

Ilya Chernoudov in pro.net
Какой код должен быть в jit, чтобы он посчитал, что checked не нужен?
источник

E

EgorBo in pro.net
42.0 — проверить на нормальную форму, а потом проверить на принадлежность к диапазону long.MinValue..long.MaxValue
источник

E

EgorBo in pro.net
всё
источник

IC

Ilya Chernoudov in pro.net
EgorBo
42.0 — проверить на нормальную форму, а потом проверить на принадлежность к диапазону long.MinValue..long.MaxValue
То есть вот этого не хватает в jit
источник

E

EgorBo in pro.net
если не удовлетворяет хотя бы одному условию - не оптимизровать чекед
источник

IC

Ilya Chernoudov in pro.net
Выкидывание checked для констант
источник

E

EgorBo in pro.net
да. джит консервативен с checked, в большинстве оптимизаций проверяется is in checked context и если да — сразу give up
источник

E

EgorBo in pro.net
в принципе имеет смысл
источник

IC

Ilya Chernoudov in pro.net
EgorBo
в принципе имеет смысл
почему? для константособого смыла не имеет
источник

E

EgorBo in pro.net
имеет смысл в плане что чекед в основном юзается когда тебя больше заботит корректность
источник

E

EgorBo in pro.net
а не ковбой-стайл оптимизации
источник

IC

Ilya Chernoudov in pro.net
EgorBo
имеет смысл в плане что чекед в основном юзается когда тебя больше заботит корректность
время оптимизаций)
источник

E

EgorBo in pro.net
источник

E

EgorBo in pro.net
применил хак ulong :)
источник

E

EgorBo in pro.net
но пизда, Native estimate for function size exceeds threshold for inlining 96.5 > 95.4 (multiplier = 8.3)
источник