1. A method for combined static and dynamic compilation of program code to remove delinquent loads, the method comprising: statically compiling source code into executable code with instrumented sections each being suspected of including a delinquent load, and also into a separate intermediate language representation with annotated portions each corresponding to one of the instrumented sections; executing the instrumented sections repeatedly and monitoring cache misses for each execution; and, dynamically recompiling selected ones of the instrumented sections using corresponding ones of the annotated portions of the separate intermediate language representation only after a threshold number of executions of the selected ones of the instrumented sections, each recompilation include a pre-fetch directive at a pre-fetch distances computed to avoid the delinquent load.
1. A method for combined static and dynamic compilation of program code to remove delinquent loads, the method comprising: statically compiling source code into executable code with instrumented sections each being suspected of including a delinquent load, and also into a separate intermediate language representation with annotated portions each corresponding to one of the instrumented sections; executing the instrumented sections repeatedly and monitoring cache misses for each execution; and, dynamically recompiling selected ones of the instrumented sections using corresponding ones of the annotated portions of the separate intermediate language representation only after a threshold number of executions of the selected ones of the instrumented sections, each recompilation include a pre-fetch directive at a pre-fetch distances computed to avoid the delinquent load. 2. The method of claim 1 , further comprising removing instrumentation from the selected ones of the instrumented sections during recompilation.