Patents by Inventor Thomas Wuerthinger

Thomas Wuerthinger has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).

  • Publication number: 20240045785
    Abstract: A tracing controller may utilize a binary execution trace mechanism to trace execution of compiled application machine code. The tracing controller may initiate hardware tracing to gather control-flow hardware traces of a method executing on a processor configured to generate hardware tracing information. The controller may generate a profile based on the hardware tracing information and initiate re-compiling or re-optimizing of the method in response to determining that the new profile differs from the previous profile. The controller may repeatedly profile and re-optimize a method until profiles for the method stabilize. Profiling and hardware tracing of an application may be selectively enabled or disabled allowing the controller to respond to later phase changes in application execution by re-optimizing, thereby potentially improving overall application performance.
    Type: Application
    Filed: October 11, 2023
    Publication date: February 8, 2024
    Inventors: Ilknur Cansu Kaynak Kocberber, Mario Wolczko, Thomas Wuerthinger
  • Patent number: 11816014
    Abstract: A tracing controller may utilize a binary execution trace mechanism to trace execution of compiled application machine code. The tracing controller may initiate hardware tracing to gather control-flow hardware traces of a method executing on a processor configured to generate hardware tracing information. The controller may generate a profile based on the hardware tracing information and initiate re-compiling or re-optimizing of the method in response to determining that the new profile differs from the previous profile. The controller may repeatedly profile and re-optimize a method until profiles for the method stabilize. Profiling and hardware tracing of an application may be selectively enabled or disabled allowing the controller to respond to later phase changes in application execution by re-optimizing, thereby potentially improving overall application performance.
    Type: Grant
    Filed: May 26, 2022
    Date of Patent: November 14, 2023
    Assignee: Oracle International Corporation
    Inventors: Ilknur Cansu Kaynak Kocberber, Mario Wolczko, Thomas Wuerthinger
  • Publication number: 20220283925
    Abstract: A tracing controller may utilize a binary execution trace mechanism to trace execution of compiled application machine code. The tracing controller may initiate hardware tracing to gather control-flow hardware traces of a method executing on a processor configured to generate hardware tracing information. The controller may generate a profile based on the hardware tracing information and initiate re-compiling or re-optimizing of the method in response to determining that the new profile differs from the previous profile. The controller may repeatedly profile and re-optimize a method until profiles for the method stabilize. Profiling and hardware tracing of an application may be selectively enabled or disabled allowing the controller to respond to later phase changes in application execution by re-optimizing, thereby potentially improving overall application performance.
    Type: Application
    Filed: May 26, 2022
    Publication date: September 8, 2022
    Inventors: Ilknur Cansu Kaynak Kocberber, Mario Wolczko, Thomas Wuerthinger
  • Patent number: 11347617
    Abstract: A tracing controller may utilize a binary execution trace mechanism to trace execution of compiled application machine code. The tracing controller may initiate hardware tracing to gather control-flow hardware traces of a method executing on a processor configured to generate hardware tracing information. The controller may generate a profile based on the hardware tracing information and initiate re-compiling or re-optimizing of the method in response to determining that the new profile differs from the previous profile. The controller may repeatedly profile and re-optimize a method until profiles for the method stabilize. Profiling and hardware tracing of an application may be selectively enabled or disabled allowing the controller to respond to later phase changes in application execution by re-optimizing, thereby potentially improving overall application performance.
    Type: Grant
    Filed: November 1, 2019
    Date of Patent: May 31, 2022
    Assignee: Oracle International Corporation
    Inventors: Ilknur Cansu Kaynak Kocberber, Mario Wolczko, Thomas Wuerthinger
  • Patent number: 10732946
    Abstract: A method for analyzing a program may include generating an initial control flow graph (CFG) for the program, identifying merge blocks of the initial CFG, identifying predecessor-merge pairs based on identifying predecessor blocks for each merge block, simulating a duplication of each predecessor-merge pair, determining whether the duplication satisfies a precondition of each of a collection of optimizations, applying, in response to satisfying the precondition, the optimization to the duplication, and generating a simulation result for the predecessor-merge pair corresponding to the duplication. The simulation result may include the optimization and a benefit of applying the optimization to the duplication. The method may further include duplicating, in the initial CFG, a predecessor-merge pair based on the simulation result corresponding to the predecessor-merge pair.
    Type: Grant
    Filed: May 16, 2019
    Date of Patent: August 4, 2020
    Assignee: Oracle International Corporation
    Inventors: David Leopoldseder, Thomas Wuerthinger, Lukas Stadler
  • Publication number: 20200065079
    Abstract: A tracing controller may utilize a binary execution trace mechanism to trace execution of compiled application machine code. The tracing controller may initiate hardware tracing to gather control-flow hardware traces of a method executing on a processor configured to generate hardware tracing information. The controller may generate a profile based on the hardware tracing information and initiate re-compiling or re-optimizing of the method in response to determining that the new profile differs from the previous profile. The controller may repeatedly profile and re-optimize a method until profiles for the method stabilize. Profiling and hardware tracing of an application may be selectively enabled or disabled allowing the controller to respond to later phase changes in application execution by re-optimizing, thereby potentially improving overall application performance.
    Type: Application
    Filed: November 1, 2019
    Publication date: February 27, 2020
    Inventors: Ilknur Cansu Kaynak Kocberber, Mario Wolczko, Thomas Wuerthinger
  • Patent number: 10466987
    Abstract: Optimizing program execution includes performing, to obtain an expanded call graph, an expansion of an initial call graph. The expanded call graph includes nodes. The initial call graph is defined for a program that includes a root method and a child method. The method may further include calculating a cost value and a benefit value for inlining the child method, calculating an inlining priority value as a function of the cost value and the benefit value, and inlining, based on analyzing the expanded call graph and comparing the inlining priority value to a dynamic threshold, the child method into the root method. The child method may correspond to a node in the expanded call graph.
    Type: Grant
    Filed: February 22, 2019
    Date of Patent: November 5, 2019
    Assignee: Oracle International Corporation
    Inventors: Aleksandar Prokopec, Thomas Wuerthinger
  • Patent number: 10466986
    Abstract: A tracing controller may utilize a binary execution trace mechanism to trace execution of compiled application machine code. The tracing controller may initiate hardware tracing to gather control-flow hardware traces of a method executing on a processor configured to generate hardware tracing information. The controller may generate a profile based on the hardware tracing information and initiate re-compiling or re-optimizing of the method in response to determining that the new profile differs from the previous profile. The controller may repeatedly profile and re-optimize a method until profiles for the method stabilize. Profiling and hardware tracing of an application may be selectively enabled or disabled allowing the controller to respond to later phase changes in application execution by re-optimizing, thereby potentially improving overall application performance.
    Type: Grant
    Filed: May 31, 2018
    Date of Patent: November 5, 2019
    Assignee: Oracle International Corporation
    Inventors: Ilknur Cansu Kaynak Kocberber, Mario Wolczko, Thomas Wuerthinger
  • Publication number: 20190303117
    Abstract: A tracing controller may utilize a binary execution trace mechanism to trace execution of compiled application machine code. The tracing controller may initiate hardware tracing to gather control-flow hardware traces of a method executing on a processor configured to generate hardware tracing information. The controller may generate a profile based on the hardware tracing information and initiate re-compiling or re-optimizing of the method in response to determining that the new profile differs from the previous profile. The controller may repeatedly profile and re-optimize a method until profiles for the method stabilize. Profiling and hardware tracing of an application may be selectively enabled or disabled allowing the controller to respond to later phase changes in application execution by re-optimizing, thereby potentially improving overall application performance.
    Type: Application
    Filed: May 31, 2018
    Publication date: October 3, 2019
    Inventors: Ilknur Cansu Kaynak Kocberber, Mario Wolczko, Thomas Wuerthinger
  • Publication number: 20190278576
    Abstract: Optimizing program execution includes performing, to obtain an expanded call graph, an expansion of an initial call graph. The expanded call graph includes nodes. The initial call graph is defined for a program that includes a root method and a child method. The method may further include calculating a cost value and a benefit value for inlining the child method, calculating an inlining priority value as a function of the cost value and the benefit value, and inlining, based on analyzing the expanded call graph and comparing the inlining priority value to a dynamic threshold, the child method into the root method. The child method may correspond to a node in the expanded call graph.
    Type: Application
    Filed: February 22, 2019
    Publication date: September 12, 2019
    Applicant: ORACLE INTERNATIONAL CORPORATION
    Inventors: Aleksandar Prokopec, Thomas Wuerthinger
  • Publication number: 20190272160
    Abstract: A method for analyzing a program may include generating an initial control flow graph (CFG) for the program, identifying merge blocks of the initial CFG, identifying predecessor-merge pairs based on identifying predecessor blocks for each merge block, simulating a duplication of each predecessor-merge pair, determining whether the duplication satisfies a precondition of each of a collection of optimizations, applying, in response to satisfying the precondition, the optimization to the duplication, and generating a simulation result for the predecessor-merge pair corresponding to the duplication. The simulation result may include the optimization and a benefit of applying the optimization to the duplication. The method may further include duplicating, in the initial CFG, a predecessor-merge pair based on the simulation result corresponding to the predecessor-merge pair.
    Type: Application
    Filed: May 16, 2019
    Publication date: September 5, 2019
    Applicant: Oracle International Corporation
    Inventors: David Leopoldseder, Thomas Wuerthinger, Lukas Stadler
  • Patent number: 10338903
    Abstract: A method for analyzing a program may include generating an initial control flow graph (CFG) for the program, identifying merge blocks of the initial CFG, identifying predecessor-merge pairs based on identifying predecessor blocks for each merge block, simulating a duplication of each predecessor-merge pair, determining whether the duplication satisfies a precondition of each of a collection of optimizations, applying, in response to satisfying the precondition, the optimization to the duplication, and generating a simulation result for the predecessor-merge pair corresponding to the duplication. The simulation result may include the optimization and a benefit of applying the optimization to the duplication. The method may further include duplicating, in the initial CFG, a predecessor-merge pair based on the simulation result corresponding to the predecessor-merge pair.
    Type: Grant
    Filed: March 21, 2018
    Date of Patent: July 2, 2019
    Assignee: ORACLE INTERNATIONAL CORPORATION
    Inventors: David Leopoldseder, Thomas Wuerthinger, Lukas Stadler
  • Patent number: 10261765
    Abstract: Optimizing program execution includes performing, to obtain a first expanded call graph, a first expansion of an initial call graph. The first initial call graph is defined for a program that includes a root method, a first child method, and a second child method. Based on an analysis of the first expanded call graph, the first child method, corresponding to a node in the first expanded call graph, is inlined into the root method. An optimization operation is performed in response to inlining the child method, and the first expanded call graph is updated based on the optimization operation. A second expansion of the updated call graph is performed. Based on an analysis of the second expanded call graph, the second child method is inlined into the root method, where the second child method corresponds to a node in the second expanded call graph. Compilation of the program is completed.
    Type: Grant
    Filed: March 9, 2018
    Date of Patent: April 16, 2019
    Assignee: Oracle International Corporation
    Inventors: Aleksandar Prokopec, Thomas Wuerthinger
  • Publication number: 20190012154
    Abstract: A method for analyzing a program may include generating an initial control flow graph (CFG) for the program, identifying merge blocks of the initial CFG, identifying predecessor-merge pairs based on identifying predecessor blocks for each merge block, simulating a duplication of each predecessor-merge pair, determining whether the duplication satisfies a precondition of each of a collection of optimizations, applying, in response to satisfying the precondition, the optimization to the duplication, and generating a simulation result for the predecessor-merge pair corresponding to the duplication. The simulation result may include the optimization and a benefit of applying the optimization to the duplication. The method may further include duplicating, in the initial CFG, a predecessor-merge pair based on the simulation result corresponding to the predecessor-merge pair.
    Type: Application
    Filed: March 21, 2018
    Publication date: January 10, 2019
    Inventors: David Leopoldseder, Thomas Wuerthinger, Lukas Stadler
  • Patent number: 9836288
    Abstract: The invention relates to a method for generating executable code from application source code. The method steps include determining a programmatic expression using the application source code and determining a first value for the programmatic expression. The method steps further include compiling the programmatic expression into a first optimized code portion using the first value, an assumption, and an expression scope. The method steps further include executing the application source code. The method steps further include determining that the programmatic expression is modified outside of the expression scope, invalidating the assumption, and de-optimizing the first optimized code portion.
    Type: Grant
    Filed: April 20, 2015
    Date of Patent: December 5, 2017
    Assignee: Oracle International Corporation
    Inventors: Lukas Stadler, Thomas Wuerthinger, Gero Leinemann, Michael Haupt
  • Patent number: 9766926
    Abstract: A method for executing a program in parallel includes creating a program replica, which includes a write operation on and an identifier of an object and is a copy of the program, for a thread. The identifier specifies whether the object is thread-local. The method includes modifying the write operation based on a speculation that the write operation uses only thread-local objects. The write operation executes in a transaction of the thread. The method includes determining, while executing the program replica and using the identifier, that the object used by the write operation is not thread-local, de-optimizing the write operation by adding instrumentation to implement a software transactional memory (STM) system for the write operation to obtain a de-optimized write operation, and performing the de-optimized write operation on the object to obtain a result and store the result in a redo log.
    Type: Grant
    Filed: January 31, 2014
    Date of Patent: September 19, 2017
    Assignee: Oracle International Corporation
    Inventors: Daniele Bonetta, Thomas Wuerthinger
  • Patent number: 9740463
    Abstract: A method and system of cross-language inlining that includes receiving source code of a multiple language program, the source code including a main language and a first access of a first foreign object in a first additional language; translating the main language to obtain a main language intermediate representation (IR); translating the first additional language to obtain a first IR snippet; composing, before performing a compilation, the main language IR and the first IR snippet to obtain a cross-language IR; and performing the compilation of the cross-language IR to obtain machine code corresponding to the multiple language program.
    Type: Grant
    Filed: August 10, 2015
    Date of Patent: August 22, 2017
    Assignee: Oracle International Corporation
    Inventors: Matthias Grimmer, Chris Seaton, Thomas Wuerthinger
  • Publication number: 20170046137
    Abstract: A method and system of cross-language inlining that includes receiving source code of a multiple language program, the source code including a main language and a first access of a first foreign object in a first additional language; translating the main language to obtain a main language intermediate representation (IR); translating the first additional language to obtain a first IR snippet; composing, before performing a compilation, the main language IR and the first IR snippet to obtain a cross-language IR; and performing the compilation of the cross-language IR to obtain machine code corresponding to the multiple language program.
    Type: Application
    Filed: August 10, 2015
    Publication date: February 16, 2017
    Inventors: Matthias Grimmer, Chris Seaton, Thomas Wuerthinger
  • Patent number: 9569185
    Abstract: A method for compiling code includes receiving a code section representation including a guard at a location, placing, at the guard, a triggering condition, and relocating the guard from the location to a second location in the code section representation. The method also includes transforming the guard into a control-split instruction. The control-split instruction includes a deoptimization branch and a continue execution branch. The method further includes placing, at the guard, a deoptimization instruction, and selecting a symbolic frame state linked to a side-effecting instruction. The side-effecting instruction is the last side-effecting instruction before the control-split instruction. The method also includes linking the deoptimization instruction with the symbolic frame state based on the symbolic frame state being linked to the side-effecting instruction, unlinking the symbolic frame state from the side-effecting instruction, and storing the code section representation.
    Type: Grant
    Filed: February 7, 2014
    Date of Patent: February 14, 2017
    Assignee: Oracle International Corporation
    Inventors: Thomas Wuerthinger, Gilles Marie Duboscq
  • Publication number: 20160117157
    Abstract: The invention relates to a method for generating executable code from application source code. The method steps include determining a programmatic expression using the application source code and determining a first value for the programmatic expression. The method steps further include compiling the programmatic expression into a first optimized code portion using the first value, an assumption, and an expression scope. The method steps further include executing the application source code. The method steps further include determining that the programmatic expression is modified outside of the expression scope, invalidating the assumption, and de-optimizing the first optimized code portion.
    Type: Application
    Filed: April 20, 2015
    Publication date: April 28, 2016
    Inventors: Lukas Stadler, Thomas Wuerthinger, Gero Leinemann, Michael Haupt