Я не эксперт, но из того, что я вижу, ответ будет нет .
На следующих двух сайтах перечислены коды операций Dalvik и JVM, и, кроме того факта, что Dalvik является виртуальной машиной на основе регистров, а JVM основана на стеке, коды операций довольно похожи.
http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html
http://en.wikipedia.org/wiki/Java_bytecode
Оба они специально предназначены для работы с Java-языком (хотя в будущих версиях JVM есть предложения по снятию этого ограничения).
Одна из проблем оптимизации хвостового вызова в Java заключается в том, что стек вызовов фактически доступен для программы (например, через new Throwable().getStackTrace()
, который также присутствует в Android). Если бы виртуальная машина выполняла оптимизацию "хвостовых" вызовов, ей нужно было бы иметь некоторую бухгалтерию для того, что она просто "оптимизировала", чтобы правильно реализовать метод getStackTrace
.