1.5Kпросмотров
38.1%от подписчиков
19 февраля 2026 г.
Score: 1.6K
Существует такая оптимизация компилятора, как девиртуализация, которая помогает убрать накладные расходы при использовании косвенных вызовов: например, интерфейсов или дженериков. Когда компилятор может доказать, что в конкретном месте будет точно использоваться конкретный тип, то он может заменить косвенный вызов на прямой, и сэкономить драгоценные ресурсы. Можете увидеть детальнее в коротком ролике https://youtube.com/shorts/Bov2wEYvy7g 👨🎓 К слову, любопытно, что при этом он всё равно поддерживает служебные регистры в том состоянии, какими они были бы при косвенном вызове: MOVD $main..dict.GenericHasBerriesmain.ApplePie, R26
MOVD $main.ApplePie.HasBerries(SB), R1
...
CALL (R1) Смотрите: хоть в регистр R1 и был помещён прямой вызов (адрес) $main.ApplePie.HasBerries (из-за девиртуализации), но в R26 всё равно был помещён словарь для дженерика для поддержания согласованности! https://youtube.com/shorts/Bov2wEYvy7g