1. A method implemented with one or more processors coupled to programmed instructions respectively stored on one or more computer readable storage media, where execution of the respectively stored instructions by the one or more processors causes the method to be performed, comprising: instrumenting, by one or more processors executing a multi-pass profiler from a first computer readable storage medium, a code region of an application with first annotations for generating profile data; executing, by the one or more processors, the application with the first annotations, wherein executing the application with the first annotations generates first profile data for the code region, the first profile data stored in a second computer readable storage medium; identifying, by the one or more processors executing the multi-pass profiler, from the first profile data, a delinquent code region within the code region, wherein the delinquent code region is defined by a location of at least one of the first annotations, wherein the delinquent code region comprises a code sub-region of the code region in which a count of cache misses exceeds a first predefined threshold; determining, by the one or more processors executing the multi-pass profiler, second annotations based, at least in part, on the first profile data and the at least one of the first annotations that defines the delinquent code region; instrumenting, by the one or more processors executing the multi-pass profiler, based on the first profile data, a code sub-region of the delinquent code region with the second annotations for generating profile data, wherein said instrumenting with the second annotations is finer grained cache miss profiling than said instrumenting with the first annotations, wherein the finer grained cache miss profiling comprises instrumenting each memory reference in the code sub-region associated with cache misses, and wherein the finer grained cache miss profiling identifies one or more lines of the code sub-region likely to lead to a cache miss; executing, by the one or more processors, the application with the second annotations, wherein said executing the application with the second annotations generates second profile data for the code sub-region; and in response to determining, by the one or more processors executing the multi-pass profiler, that a second count of cache misses associated with a memory reference in the code sub-region exceeds a second predefined threshold, providing, by the one or more processors executing the multi-pass profiler, a compiler hint for one or more lines of the code sub-region associated with the memory reference.