Может ли robovm размещать объекты локальных методов в стеке, а не в куче?

В C (соответственно C++) можно выделить массивы, структуры (соответственно объекты), которые строго локальны для функции (соответственно метод) в кадре стека, выделенном для этой функции.

Однако в Java все объекты размещаются в куче, даже объекты, которые полностью локальны для метода и никогда не просачиваются за пределы метода.

В некоторых случаях возможность размещать такие объекты в стеке, а не в куче, обеспечит значительный прирост эффективности.

Поддерживает ли это генерация кода в RoboVM или в будущем?

С уважением

1 ответ

Решение

RoboVM не поддерживает выделение стека. Некоторые виртуальные машины выполняют экранирующий анализ, чтобы определить, является ли определенное распределение локальным для метода и может быть выполнено в стеке вместо кучи. Мы могли бы добавить это к RoboVM в будущем в качестве оптимизации, хотя это не будет напрямую контролироваться пользователем. Я знаю, что IBM экспериментирует с чем-то похожим на структуры.NET: http://www.slideshare.net/mmitran/ibm-java-packed-objects-mmit-20121120. Если это когда-либо будет принято как стандарт, мы постараемся реализовать его в RoboVM.

Другие вопросы по тегам