Re[61]: MS забило на дотнет. Питону - да, сишарпу - нет?
От: Sinclair Россия https://github.com/evilguest/
Дата: 09.09.21 13:09
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Там все-равно уникальный код под структуру генерится джитом.

Генерится-то он джитом, но виртуальный вызов заменяется прямым ровно потому, что нельзя передать в метод Foo(ref T val) ссылку на потомка T.
А запрет на виртуальные методы в данном контексте плавно превращается в запрет реализовывать интерфейсы, чтобы избежать странных эффектов.
Ну, либо правила определения того, что можно, а что нельзя, становятся чрезмерно сложными.

V>Кстате, и тут АОТ может помочь, бо если две структуры имеют одинаковый лейаут и функциональность, то и сгенерённый код под них мог бы бы одинаковый.

Так-то и джит мог бы "увидеть", что две структуры имеют одинаковый лэйаут, то можно сравнить MSIL методов и для совпадающих методов генерировать одну копию кода.
V>Например, как все инстансы Pointer<T>.
Речь про велосипед типа https://www.codeproject.com/Articles/1254502/Creating-a-pointer-type-in-Csharp?
Или есть какой-то кошерный Pointer<T>, на который можно посмотреть?

V>Именно.

V>Хотя, при передаче по-значению можно выкрутиться через implicit-оператор приведения типа.
Ну, это будет одновременно криво и неэффективно
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.