Patents by Inventor Mark Graham Stoodley

Mark Graham Stoodley 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: 11520866
    Abstract: Improving execution of application program instructions by receiving code having a security classification, determining that the code is untrusted according to the security classification and inserting instructions for a cache flush associated with executing the code.
    Type: Grant
    Filed: September 10, 2019
    Date of Patent: December 6, 2022
    Assignee: International Business Machines Corporation
    Inventors: Vijay Sundaresan, Mark Graham Stoodley, Zhong Liang Wang
  • 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: 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
  • Publication number: 20210073355
    Abstract: Improving execution of application program instructions by receiving code having a security classification, determining that the code is untrusted according to the security classification and inserting instructions for a cache flush associated with executing the code.
    Type: Application
    Filed: September 10, 2019
    Publication date: March 11, 2021
    Inventors: Vijay Sundaresan, Mark Graham Stoodley, Zhong Liang Wang
  • Patent number: 8589900
    Abstract: A code region forming part of a computer program is modified during execution of the computer program by a plurality of threads. In one aspect, identical modification instructions are provided to each thread for modifying a site in the code region having a desirable idempotent atomic modification, and the modification instructions direct each thread to make the desirable idempotent atomic modification. In another aspect, a thread is selected to modify the code region, each thread other than the selected thread is directed to execute an alternative execution path that generates output identical to the output of the code region after the code region has been modified, and, responsive to directing each thread other than the selected thread, the selected thread is directed to modify the code region.
    Type: Grant
    Filed: August 21, 2007
    Date of Patent: November 19, 2013
    Assignee: International Business Machines Corporation
    Inventors: Kevin Alexander Stoodley, Mark Graham Stoodley
  • Patent number: 8584111
    Abstract: A code region forming part of a computer program is modified during execution of the computer program by a plurality of threads. In one aspect, identical modification instructions are provided to each thread for modifying a site in the code region having a desirable idempotent atomic modification, and the modification instructions direct each thread to make the desirable idempotent atomic modification. In another aspect, a thread is selected to modify the code region, each thread other than the selected thread is directed to execute an alternative execution path that generates output identical to the output of the code region after the code region has been modified, and, responsive to directing each thread other than the selected thread, the selected thread is directed to modify the code region.
    Type: Grant
    Filed: August 21, 2007
    Date of Patent: November 12, 2013
    Assignee: International Business Machines Corporation
    Inventors: Kevin Alexander Stoodley, Mark Graham Stoodley
  • Patent number: 8572596
    Abstract: A code region forming part of a computer program is modified during execution of the computer program by a plurality of threads. In one aspect, identical modification instructions are provided to each thread for modifying a site in the code region having a desirable idempotent atomic modification, and the modification instructions direct each thread to make the desirable idempotent atomic modification. In another aspect, a thread is selected to modify the code region, each thread other than the selected thread is directed to execute an alternative execution path that generates output identical to the output of the code region after the code region has been modified, and, responsive to directing each thread other than the selected thread, the selected thread is directed to modify the code region.
    Type: Grant
    Filed: August 21, 2007
    Date of Patent: October 29, 2013
    Assignee: International Business Machines Corporation
    Inventors: Kevin Alexander Stoodley, Mark Graham Stoodley
  • Patent number: 8555266
    Abstract: A computer-implemented method, apparatus, and computer program product to manage variable assignments in a program. The process identifies a set of variable assignments that is live on a portion of paths to form a set of identified variable assignments. Each of the set of identified variable assignments assign a value to at least one variable of a set of variables. The process determines a set of program points at which the set of identified variable assignments is live on all paths. The process also moves the set of identified variable assignments to the set of program points in response to determining that the set of identified variable assignments is movable to the set of program points.
    Type: Grant
    Filed: November 13, 2007
    Date of Patent: October 8, 2013
    Assignee: International Business Machines Corporation
    Inventors: Reid T. Copeland, Mark Graham Stoodley, Vijay Sundaresan, Ning Thomas Wong
  • Patent number: 8423594
    Abstract: A method for implementing a hash map to improve performance consistency is disclosed herein. In one embodiment, such a method includes providing a hash map comprising a set of tables, the set of tables initially containing a first table. When the first table is full, the method augments the hash map by adding a second table to the set of tables. Similarly, when the second table is full, the method augments the hash map by adding a third table to the set of tables. A similar technique may be used to add additional tables to the hash map. When searching for a value in any of the tables in the hash map, the method uses the same hash code. A corresponding computer program product and apparatus are also disclosed herein.
    Type: Grant
    Filed: September 1, 2010
    Date of Patent: April 16, 2013
    Assignee: International Business Machines Corporation
    Inventors: Michael Stephen Fulton, Mark Graham Stoodley
  • Patent number: 8291393
    Abstract: A computer implemented method for performing inlining in a just-in-time compiler. Compilation of a first code of a program is begun. The first code is one of an interruptible code and a non-interruptible code. A try region is established around a second code of the program to form a wrapped second code. The try region is a boundary between interruptible and non-interruptible code such that a third code that modifies an observable state of the program cannot be moved across the boundary. The second code is, relative to the first code, the other of the interruptible code and the non-interruptible code. The wrapped second code is inlined with the first code during compilation. Compilation of the first code is completed to form a resultant code. The resultant code is stored.
    Type: Grant
    Filed: August 20, 2007
    Date of Patent: October 16, 2012
    Assignee: International Business Machines Corporation
    Inventors: Patrick G. Gallop, Derek Bruce Inglis, Mark Graham Stoodley
  • Patent number: 8276134
    Abstract: An improved system and computer programming product for acquisition and release of locks within a software program is disclosed. In an exemplary embodiment, a lock within a loop is transformed by relocating acquisition and release instructions from within the loop to positions outside the loop. This may significantly decrease unnecessarily lock acquisition and release during execution of the software program. In order to avoid contention problems which may arise from acquiring and keeping a lock on an object over a relatively long period of time, a contention test may be inserted into the loop. Such a contention test may temporarily release the lock if another thread in the software program requires access to the locked object.
    Type: Grant
    Filed: June 9, 2008
    Date of Patent: September 25, 2012
    Assignee: International Business Machines Corporation
    Inventors: Nikola Grcevski, Kevin Alexander Stoodley, Mark Graham Stoodley, Vijay Sundaresan
  • Patent number: 8230409
    Abstract: A way to use multiple-reader locks for those paths where no writes occur is provided. Only if one of the writing paths executes will a full writer lock be acquired. Two copies of the critical section comprising a reading version and a writing version are created. The default execution leads to the reader version, which only acquires a reader-lock. The reader version of the code executes prior to execution of the writer lock only version, otherwise bypassing the writer lock only version. If the execution leads to a path in which a write would occur, the reader only version branches to the beginning of the writer version. The writer version is identical to the original code and obtains a full writer lock. If execution in the reader lock does not lead to a path that writes, then only the reader lock is acquired.
    Type: Grant
    Filed: September 28, 2007
    Date of Patent: July 24, 2012
    Assignee: International Business Machines Corporation
    Inventors: Nikola Grcevski, Mark Graham Stoodley
  • Patent number: 8185903
    Abstract: A computer implemented method, apparatus, and computer usable program product for system management. The process schedules a set of application tasks to form a schedule of tasks in response to receiving the set of application tasks from a registration module. The process then performs a feasibility analysis on the schedule of tasks to identify periods of decreased system activity. Thereafter, the process schedules a set of system management tasks during the periods of decreased system activity to form a prioritized schedule of tasks.
    Type: Grant
    Filed: December 13, 2007
    Date of Patent: May 22, 2012
    Assignee: International Business Machines Corporation
    Inventors: Mike Stephen Fulton, Mark Graham Stoodley
  • Patent number: 8104028
    Abstract: Repetitive synchronization in program code is optimized through lock coarsening that is performed subject to a number of constraints. Using a forward pass over the program code followed by a backward pass, region extent bits may be determined that identify the points in the program where object locking can be coarsened. The program code may then be modified to realize coarsened locking regions determined based on the region extent bits. Alternatively, previously determined value numbers may provide much of the information collected by the two passes. In such a case, a single pass over the program code may locate features that limit lock coarsening opportunities. A set of synchronization operations that can be removed may then be determined and used when modifying the program code to coarsen locking regions.
    Type: Grant
    Filed: March 31, 2009
    Date of Patent: January 24, 2012
    Assignee: International Business Machines Corporation
    Inventors: Mark Graham Stoodley, Vijay Sundaresan
  • Patent number: 7937695
    Abstract: Based on operations within an uncounted loop of source code, one or more calculations are generated for determining, at runtime, an expected number of iterations through which the uncounted loop can iterate before encountering an exception corresponding to at least one target exception check. A copy of the uncounted loop omitting each target exception check is generated. The uncounted loop, the copy of the uncounted loop, and the one or more calculations are arranged in compiled code so that at runtime program flow enters the copy of the uncounted loop. If a maximum number of iterations of the copy of the uncounted loop is reached, program flow proceeds from the copy of the uncounted loop to the uncounted loop. The maximum number of iterations is no more than the smallest member of a set consisting of the expected number of iterations for each target exception check.
    Type: Grant
    Filed: April 27, 2007
    Date of Patent: May 3, 2011
    Assignee: International Business Machines Corporation
    Inventor: Mark Graham Stoodley
  • Patent number: 7698697
    Abstract: Techniques for causing a compiler to organize code pertaining to data that is not constant, but that is unlikely to change except in relatively infrequent situations, in an improved manner. A class containing data that may have more than one value, but which will have a particular value in the typical case, is now split into two parts, a first class which uses the more-likely data value as a constant, and a second class (designed as a subclass of the first class) that uses the data value as a variable capable of having either the more-likely value or other, less-likely values. The compiler generates assembly code comprising instructions pertaining to the more-likely data value, and also generates assembly code capable of processing the less-likely data values. This latter code, however, is initially unreachable. The compiler-generated assembly code will be programmatically patched, at run time, if any of the less-likely data values occur, thereby dynamically making the code reachable.
    Type: Grant
    Filed: March 3, 2005
    Date of Patent: April 13, 2010
    Assignee: International Business Machines Corporation
    Inventors: Nikola Grcevski, Mark Graham Stoodley
  • Publication number: 20090235240
    Abstract: Repetitive synchronization in program code is optimized through lock coarsening that is performed subject to a number of constraints. Using a forward pass over the program code followed by a backward pass, region extent bits may be determined that identify the points in the program where object locking can be coarsened. The program code may then be modified to realize coarsened locking regions determined based on the region extent bits. Alternatively, previously determined value numbers may provide much of the information collected by the two passes. In such a case, a single pass over the program code may locate features that limit lock coarsening opportunities. A set of synchronization operations that can be removed may then be determined and used when modifying the program code to coarsen locking regions.
    Type: Application
    Filed: March 31, 2009
    Publication date: September 17, 2009
    Applicant: International Business Machines Corporation
    Inventors: Mark Graham Stoodley, Vijay Sundaresan
  • Patent number: 7552428
    Abstract: Repetitive synchronization in program code is optimized through lock coarsening that is performed subject to a number of constraints. Using a forward pass over the program code followed by a backward pass, region extent bits may be determined that identify the points in the program where object locking can be coarsened. The program code may then be modified to realize coarsened locking regions determined based on the region extent bits. Alternatively, previously determined value numbers may provide much of the information collected by the two passes. In such a case, a single pass over the program code may locate features that limit lock coarsening opportunities. A set of synchronization operations that can be removed may then be determined and used when modifying the program code to coarsen locking regions.
    Type: Grant
    Filed: May 27, 2004
    Date of Patent: June 23, 2009
    Assignee: International Business Machines Corporation
    Inventors: Mark Graham Stoodley, Vijay Sundaresan
  • Publication number: 20090158288
    Abstract: A computer implemented method, apparatus, and computer usable program product for system management. The process schedules a set of application tasks to form a schedule of tasks in response to receiving the set of application tasks from a registration module. The process then performs a feasibility analysis on the schedule of tasks to identify periods of decreased system activity. Thereafter, the process schedules a set of system management tasks during the periods of decreased system activity to form a prioritized schedule of tasks.
    Type: Application
    Filed: December 13, 2007
    Publication date: June 18, 2009
    Inventors: Mike Stephen Fulton, Mark Graham Stoodley
  • Publication number: 20090125893
    Abstract: The illustrative embodiments described herein provide a computer-implemented method, apparatus, and computer program product for managing variable assignments in a program. The process identifies a set of variable assignments that is live on a portion of paths to form a set of identified variable assignments. Each of the set of identified variable assignments assign a value to at least one variable of a set of variables. The process determines a set of program points at which the set of identified variable assignments is live on all paths. The process also moves the set of identified variable assignments to the set of program points in response to determining that the set of identified variable assignments is movable to the set of program points.
    Type: Application
    Filed: November 13, 2007
    Publication date: May 14, 2009
    Inventors: Reid T. Copeland, Mark Graham Stoodley, Vijay Sundaresan, Ning Thomas Wong