LINUX.ORG.RU
Ответ на: комментарий от Howler

Что мешает добавить хвостовую рекурсию в компилятор явы?
Есть же открытые компиляторы.
Или нужна какая-то поддержка на уровне VM еще?

anonymous
()
Ответ на: комментарий от anonymous

>Или нужна какая-то поддержка на уровне VM еще?

Нужна. При некоторых условиях ты можешь захвосторекурсить в пределах одного метода. К примеру, если метод - final, хвостовой рекурсивный вызов - это просто переприсваивание параметров метода (если они не final, конечно) и прыжок на на чало функции. Но вот если метод не final или идет хвостовой вызов метода другого класс - не выйдет. Нужна поддержка на уровне JVM.

WFrag ★★★★
()
Ответ на: комментарий от anonymous

Нужна поддержка на уровне VM, такая, как в .NET - там разные инструкции для call и tail call, вторая не пихает контекст в стек.

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

Howler
()
Ответ на: комментарий от Howler

> Нужна поддержка на уровне VM

Виталик, успокойся, прими таблеточку, попей водички, напиши "поддержку на уровне VM", покажи, что ты не только трендеть в форумах умеешь.

anonymous
()
Ответ на: комментарий от Howler

P.S. Во избежание передёргиваний и воплей "Microsoft сасёт" добавлю, что это далеко не единственная VM с нормальной поддержкой хвостовой рекурсии. Пожалуй, наоборот, JVM - досадное исключение.

Howler
()
Ответ на: комментарий от Howler

Виталик, как это тебе не удалось до сих пор убедить в этом твоих коллег, насколько я понял из твоего "ламента" на твоем неподражаемом "пиджин-инглиш"? Неужто все твои коллеги пойдут в биореактор?

Другой Анонимус

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.