1. A method of autonomically reorganizing code of a computer program, comprising the steps of: monitoring branch count per instruction statistics, wherein the branch count per instruction statistics are generated from the results of a set of hardware counters that count branches taken per instruction of the computer program; determining whether a block of code is to be reorganized, wherein the block of code comprises a set of instructions; in response to the step of determining, locally reorganizing the block of code such that fewer branches are taken.