Я знаю, что один из критериев, который Java HotSpot использует для определения того, стоит ли указывать метод, - это насколько он большой. С одной стороны, это кажется разумным: если метод большой, встраивание приводит к раздуванию кода, и выполнение этого метода занимает так много времени, что издержки вызова становятся тривиальными. Проблема с этой логикой состоит в том, что может оказаться, что ПОСЛЕ того, как вы решите встроить, становится ясно, что для этого конкретного сайта вызова большая часть метода - мертвый код. Например, метод может быть гигантским оператором switch, но большинство сайтов вызовов вызывают метод с константой времени компиляции, так что на самом деле: встраивание является дешевым (не требует полного тела метода; минимальное увеличение кода) и эффективным (накладные расходы на вызов метода преобладают над фактической работой).
Есть ли у HotSpot какой-либо механизм, позволяющий использовать преимущества таких ситуаций и встроить метод в любом случае, или есть ли предел, за которым он отказывается даже рассматривать встраивание метода, даже если он будет иметь минимальный эффект разрастания кода?