Patents by Inventor Andrew James CRAIK

Andrew James CRAIK 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).

  • Patent number: 11740947
    Abstract: A computer-implemented method and system for resilient adaptive biased locking. The method includes adding, in a system including an adaptive lock reservation scheme having a learning state, a component comprising a per class counter that counts, collectively, a number of learning failures and a number of revocation failures. An embodiment includes initializing the per class counter upon loading a class with a predetermined value representing at least one of a maximum number of learning failures and cancellation instances associated with the class. An embodiment includes initializing, based on a determination of an operational state of the per class counter for an object transitioning from one of the learning state and a biased state to a flatlock state, a lock word of the object directly to the flatlock state while bypassing the biased state.
    Type: Grant
    Filed: May 25, 2022
    Date of Patent: August 29, 2023
    Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
    Inventor: Andrew James Craik
  • Patent number: 11609752
    Abstract: Embodiments relate to a system, program product, and method for implementing loop lock reservations, and, more specifically, for holding a lock reservation across some or all of the iterations of a loop, and under certain conditions, temporarily effect a running thread to yield the reservation and allow other threads to enter the lock.
    Type: Grant
    Filed: April 12, 2022
    Date of Patent: March 21, 2023
    Assignee: International Business Machines Corporation
    Inventor: Andrew James Craik
  • Publication number: 20220283879
    Abstract: A computer-implemented method and system for resilient adaptive biased locking. The method includes adding, in a system including an adaptive lock reservation scheme having a learning state, a component comprising a per class counter that counts, collectively, a number of learning failures and a number of revocation failures. An embodiment includes initializing the per class counter upon loading a class with a predetermined value representing at least one of a maximum number of learning failures and cancellation instances associated with the class. An embodiment includes initializing, based on a determination of an operational state of the per class counter for an object transitioning from one of the learning state and a biased state to a flatlock state, a lock word of the object directly to the flatlock state while bypassing the biased state.
    Type: Application
    Filed: May 25, 2022
    Publication date: September 8, 2022
    Applicant: International Business Machines Corporation
    Inventor: Andrew James Craik
  • Patent number: 11409580
    Abstract: Provided are a computer program product, system, and method for modifying a series of lock acquire and release operations to use a single lock reservation. A representation of source code is scanned to determine a series of acquire lock program statement and release lock program statement pairs to acquire and release a lock by a thread. A first acquire lock program statement in the series is modified to be an acquire with reserve program statement that when executed by the thread causes the thread to acquire the lock and indicate the lock as reserved for use by the thread. A last release lock program statement in the series is modified to be a release with cancel program statement that when executed by the thread causes the thread to release the lock and indicate the lock as not reserved.
    Type: Grant
    Filed: February 26, 2020
    Date of Patent: August 9, 2022
    Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
    Inventor: Andrew James Craik
  • Patent number: 11409578
    Abstract: A computer-implemented method and system for resilient adaptive biased locking. The method includes adding, in a system including an adaptive lock reservation scheme having a learning state, a component comprising a per class counter that counts, collectively, a number of learning failures and a number of revocation failures. An embodiment includes initializing the per class counter upon loading a class with a predetermined value representing at least one of a maximum number of learning failures and cancellation instances associated with the class. An embodiment includes initializing, based on a determination of an operational state of the per class counter for an object transitioning from one of the learning state and a biased state to a flatlock state, a lock word of the object directly to the flatlock state while bypassing the biased state.
    Type: Grant
    Filed: November 27, 2019
    Date of Patent: August 9, 2022
    Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
    Inventor: Andrew James Craik
  • Publication number: 20220244928
    Abstract: Embodiments relate to a system, program product, and method for implementing loop lock reservations, and, more specifically, for holding a lock reservation across some or all of the iterations of a loop, and under certain conditions, temporarily effect a running thread to yield the reservation and allow other threads to enter the lock.
    Type: Application
    Filed: April 12, 2022
    Publication date: August 4, 2022
    Inventor: Andrew James Craik
  • Patent number: 11397568
    Abstract: An embodiment performs escape analysis of a function as a compiler optimization and stack-allocates an object referenced by the function. At runtime, the embodiment includes detecting a hot code replacement of a portion of the function while the referenced object is stored in stack memory. Responsive to detecting the hot code replacement, the embodiment includes allocating heap memory for the object and moving the object from the stack memory to the allocated heap memory. The embodiment also updates references to the object that were pointing to the object in the stack memory to instead point to the object in the heap memory.
    Type: Grant
    Filed: May 13, 2020
    Date of Patent: July 26, 2022
    Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
    Inventors: Andrew James Craik, Vijay Sundaresan
  • Patent number: 11334331
    Abstract: Embodiments relate to a system, program product, and method for implementing loop lock reservations, and, more specifically, for holding a lock reservation across some or all of the iterations of a loop, and under certain conditions, temporarily effect a running thread to yield the reservation and allow other threads to enter the lock.
    Type: Grant
    Filed: March 25, 2020
    Date of Patent: May 17, 2022
    Assignee: International Business Machines Corporation
    Inventor: Andrew James Craik
  • Patent number: 11226799
    Abstract: An embodiment includes requesting, by a compiler responsive to execution of a first code segment, a first profile dataset associated with the first code segment. The embodiment also includes executing, responsive to receiving an indication that the first profile dataset is not available, a querying process that searches other code segments based on specified criteria relating to an attribute of the first code segment. The embodiment also includes receiving a search result from the querying process, where the search result includes a second code segment. The embodiment also includes generating an extrapolated profile dataset based at least in part on the second code segment. The embodiment stores the extrapolated profile dataset in memory associated with the first code segment, and the compiler performs an optimization process on the first code segment using the extrapolated profile dataset.
    Type: Grant
    Filed: August 31, 2020
    Date of Patent: January 18, 2022
    Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
    Inventors: Vijay Sundaresan, Andrew James Craik, Mark Graham Stoodley, Daniel Heidinga
  • Patent number: 11188316
    Abstract: An embodiment includes executing a code interpretation engine such that the interpretation engine interprets a first portion of a source code that includes a first comparison between a first pair of operands. The embodiment also includes performing, in memory, a first bitwise comparison between a block A1 and a block B1 of the first portion of the source code. The embodiment also speeds up execution of the first portion of the source code responsive to the first bitwise comparison producing a negative result. The embodiment speeds up the first portion by omitting at least one of (i) a second bitwise comparison between a block A2 and a block B2, and (ii) a field-wise comparison between a block A3 and a block B3.
    Type: Grant
    Filed: March 9, 2020
    Date of Patent: November 30, 2021
    Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
    Inventors: Oluwatobi Ajila, Andrew James Craik, Daniel Heidinga, Graham Alan Chapman
  • Patent number: 11188364
    Abstract: A method list is built for a currently executing application within a process virtual machine at a snapshot point, the method list comprising a set of methods capable of being executed by the currently executing application after the snapshot point, the snapshot point comprising an execution state of the currently executing application when a snapshot process is triggered. Profiling data of the currently executing application, collected prior to reaching the snapshot point, is committed, to a designated storage location. Using the profiling data and a just-in-time compiler of the process virtual machine, a method in the method list is compiled. Snapshot data comprising data of the execution state of the currently executing application at the snapshot point, including a result of the compiling, is stored.
    Type: Grant
    Filed: August 28, 2020
    Date of Patent: November 30, 2021
    Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
    Inventors: Vijay Sundaresan, Mark Graham Stoodley, Andrew James Craik, Daniel Heidinga, Ashutosh Mehra
  • Patent number: 11182149
    Abstract: A computer-implemented method and related system for runtime code patching comprises determining, by a runtime, that a runtime event occurred. In response to the determination, performing by the runtime blocking processing of the runtime event, and runtime patching a method in response to an executing thread associated with the method yielding. Each executing thread receives runtime patching and only methods currently executing are runtime patched. Unblocking the runtime event allows execution to continue.
    Type: Grant
    Filed: September 30, 2019
    Date of Patent: November 23, 2021
    Assignee: International Business Machines Corporation
    Inventor: Andrew James Craik
  • Patent number: 11157252
    Abstract: A method, computer system, and computer program product for estimation of post-inlining transformation benefits are provided. The embodiment may include performing abstract interpretation on a program to find potential post-inlining transformations. The embodiment may also include encoding potential post-inlining transformations into a profitability metric by associating constraints under which a profit is determined to be realized. The embodiment may further include scaling the profitability metric using the relative execution frequency of the program point to which the transformation applies to favor applying transformations in the most frequently executed code paths. The embodiment may also include generating method summaries to store the potential post-inlining transformations in the method summaries. The embodiment may further include creating a method summary map to match each method with each method summary.
    Type: Grant
    Filed: April 30, 2019
    Date of Patent: October 26, 2021
    Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
    Inventors: Andrew James Craik, Erick Ochoa, Jose Nelson Amaral, Karim Ali
  • Publication number: 20210303373
    Abstract: Embodiments relate to a system, program product, and method for implementing loop lock reservations, and, more specifically, for holding a lock reservation across some or all of the iterations of a loop, and under certain conditions, temporarily effect a running thread to yield the reservation and allow other threads to enter the lock.
    Type: Application
    Filed: March 25, 2020
    Publication date: September 30, 2021
    Inventor: Andrew James Craik
  • Publication number: 20210279044
    Abstract: An embodiment includes executing a code interpretation engine such that the interpretation engine interprets a first portion of a source code that includes a first comparison between a first pair of operands. The embodiment also includes performing, in memory, a first bitwise comparison between a block A1 and a block B1 of the first portion of the source code. The embodiment also speeds up execution of the first portion of the source code responsive to the first bitwise comparison producing a negative result. The embodiment speeds up the first portion by omitting at least one of (i) a second bitwise comparison between a block A2 and a block B2, and (ii) a field-wise comparison between a block A3 and a block B3.
    Type: Application
    Filed: March 9, 2020
    Publication date: September 9, 2021
    Applicant: International Business Machines Corporation
    Inventors: Oluwatobi Ajila, Andrew James Craik, Daniel Heidinga, Graham Alan Chapman
  • Publication number: 20210263787
    Abstract: Provided are a computer program product, system, and method for modifying a series of lock acquire and release operations to use a single lock reservation. A representation of source code is scanned to determine a series of acquire lock program statement and release lock program statement pairs to acquire and release a lock by a thread. A first acquire lock program statement in the series is modified to be an acquire with reserve program statement that when executed by the thread causes the thread to acquire the lock and indicate the lock as reserved for use by the thread. A last release lock program statement in the series is modified to be a release with cancel program statement that when executed by the thread causes the thread to release the lock and indicate the lock as not reserved.
    Type: Application
    Filed: February 26, 2020
    Publication date: August 26, 2021
    Inventor: Andrew James Craik
  • Patent number: 11061703
    Abstract: A portion of a native memory is configured as a buffer within a native execution environment. Execution of a managed runtime code is initiated by a virtual machine. Data from a managed runtime memory of the virtual machine is marshaled by the virtual machine into the buffer. Control of execution is transferred from the managed runtime code to the native code. The native code is executed. The native code operates directly upon the marshaled data in the buffer.
    Type: Grant
    Filed: January 10, 2019
    Date of Patent: July 13, 2021
    Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
    Inventor: Andrew James Craik
  • Publication number: 20210173622
    Abstract: An embodiment performs escape analysis of a function as a compiler optimization and stack-allocates an object referenced by the function. At runtime, the embodiment includes detecting a hot code replacement of a portion of the function while the referenced object is stored in stack memory. Responsive to detecting the hot code replacement, the embodiment includes allocating heap memory for the object and moving the object from the stack memory to the allocated heap memory. The embodiment also updates references to the object that were pointing to the object in the stack memory to instead point to the object in the heap memory.
    Type: Application
    Filed: May 13, 2020
    Publication date: June 10, 2021
    Applicant: International Business Machines Corporation
    Inventors: Andrew James Craik, Vijay Sundaresan
  • Publication number: 20210157657
    Abstract: A computer-implemented method and system for resilient adaptive biased locking. The method includes adding, in a system including an adaptive lock reservation scheme having a learning state, a component comprising a per class counter that counts, collectively, a number of learning failures and a number of revocation failures. An embodiment includes initializing the per class counter upon loading a class with a predetermined value representing at least one of a maximum number of learning failures and cancellation instances associated with the class. An embodiment includes initializing, based on a determination of an operational state of the per class counter for an object transitioning from one of the learning state and a biased state to a flatlock state, a lock word of the object directly to the flatlock state while bypassing the biased state.
    Type: Application
    Filed: November 27, 2019
    Publication date: May 27, 2021
    Applicant: International Business Machines Corporation
    Inventor: Andrew James Craik
  • Publication number: 20210096843
    Abstract: A computer-implemented method and related system for runtime code patching comprises determining, by a runtime, that a runtime event occurred. In response to the determination, performing by the runtime blocking processing of the runtime event, and runtime patching a method in response to an executing thread associated with the method yielding. Each executing thread receives runtime patching and only methods currently executing are runtime patched. Unblocking the runtime event allows execution to continue.
    Type: Application
    Filed: September 30, 2019
    Publication date: April 1, 2021
    Inventor: Andrew James Craik