Решил, значит, один наш инженер (который никак не хочет заводить твиттер) поразгонять компилятор на amd64. Запустил под профайлером, видит в топе метод HashMap.putVal и вызов аллокатора. [1/3]
Для списка свободных регистров используется LinkedHashMap, причем создается с умолчательными параметрами:
- initialCapacity == 16, но это норм: регистров на amd64 тоже 16 - влезает
- но вот loadFactor по дефолту выставляется .75f
[2/3]
- создает таблицу на 16 элементов
- заполняет ее 12-ю регистрами
- реаллоцирует массив (вот вам и вызов аллокатора)
- перезапихивает туда 12 регистров (вот вам и вызов putVal)
- добавляет еще 4 регистра
[3/3]
Хорошо хоть, что не на Эльбрус.