Без заголовка
Проблемы в циклах есть - приходится использовать консервативные, т.е. неточные оценки множеств входных данных. Неточность накапливается, в результате в большой программе суперкомпиляция работает плохо: специализировать нечего.
Хотспот умеет делать весьма разные оптимизации, в том числе и "суперкомпиляторные". Например, если загружена одна реализация интерфейса, то он может заинлайнить виртуальные вызовы. Он умеет это делать даже если загружены две реализации интерфейса, но в данном месте используется только одна. Умеет делать оптимизации по всему графу управления внутри метода. При агрессивном инлайнинге межпроцедурная оптимизация не критчна, а вот межпроцедурный анализ он делать умеет, например, escape analysis.
Вот инлайнить массивы, он сцуко поже не умеет :(. Умел бы - цены бы ему не было. Хотя бы массивы у которых длина известна на этапе компиляции.