US 12,423,210 B2
Optimized recompilation using hardware tracing
Ilknur Cansu Kaynak Kocberber, Zurich (CH); Mario Wolczko, San Carlos, CA (US); and Thomas Wuerthinger, Zurich (CH)
Assigned to Oracle International Corporation, Redwood City, CA (US)
Filed by Oracle International Corporation, Redwood City, CA (US)
Filed on Oct. 11, 2023, as Appl. No. 18/485,125.
Application 18/485,125 is a continuation of application No. 17/804,288, filed on May 26, 2022, granted, now 11,816,014.
Application 17/804,288 is a continuation of application No. 16/672,319, filed on Nov. 1, 2019, granted, now 11,347,617, issued on May 31, 2022.
Application 16/672,319 is a continuation of application No. 15/994,967, filed on May 31, 2018, granted, now 10,466,986, issued on Nov. 5, 2019.
Claims priority of provisional application 62/650,812, filed on Mar. 30, 2018.
Prior Publication US 2024/0045785 A1, Feb. 8, 2024
Int. Cl. G06F 11/34 (2006.01); G06F 8/41 (2018.01)
CPC G06F 11/3466 (2013.01) [G06F 8/41 (2013.01); G06F 8/443 (2013.01); G06F 8/4441 (2013.01); G06F 8/48 (2013.01)] 20 Claims
OG exemplary drawing
 
1. A computing device, comprising:
a processor comprising one or more hardware tracing address ranges and configured to generate hardware tracing information for an application emitted by a compiler; and
a memory comprising program instructions that, when executed on the processor or another processor, cause the processor or another processor to implement a tracing controller configured to:
generate a plurality of hardware traces for the application, wherein individual ones of the plurality of hardware traces comprise execution information for different respective portions of the application, and wherein the application does not include profiling instrumentation information for optimized program instructions of the application emitted by the compiler;
generate a profile comprising execution information for different portions of the application based at least in part on different respective ones of the plurality of hardware traces; and
initiate recompilation of at least a portion of the application according to the generated profile to optimize the different portions of the application, wherein individual ones of the different portions of the application are optimized differently than other ones of the different portions of the application according to respective execution information for the different portions of the application.