Patents by Inventor Derek B. Inglis

Derek B. Inglis 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: 9235394
    Abstract: A method and system for code generation and inlining. The method includes: scanning a code, where the code includes a method; determining whether the method includes a branch if the method is too large in size to be inlined, where the branch is based on runtime types of argument; profiling runtime types of actual arguments at a call site in the method if the method includes the branch; generating a polymorphic inline cache (PIC) code from a plurality of arguments, where the plurality of arguments are based on a result of the profiling step; generating a specialized method for a frequently appearing combination of the runtime types of argument and arguments that can be invoked from the PIC code; and inlining body of the specialized method into the call site if the specialized method has a body size within a permissible range.
    Type: Grant
    Filed: August 30, 2011
    Date of Patent: January 12, 2016
    Assignee: International Business Machines Corporation
    Inventors: Derek B Inglis, Kiyokuni Kawachiya, Tamiya Onodera, Michiaki Tatsubori
  • Patent number: 8782623
    Abstract: A technique for comprehensively acquiring calling-context information at a low cost. Call site IDs are held for each thread as a call history and used as context information. At the time of calling a method, the call history existing in a current frame is shifted left, and stacked in a new frame, with the call site ID of the call site put in the lower bits. At the time of returning from the method, the value of the original call history is returned by returning the frame. At the time of performing a virtual call, call history information is recorded into a call position profile table used to identify a method to be inlined at the time of performing JIT compiling, in addition to determined jump destination information and the number of calls.
    Type: Grant
    Filed: October 14, 2011
    Date of Patent: July 15, 2014
    Assignee: International Business Machines Corporation
    Inventors: Derek B. Inglis, Kiyokuni Kawachiya, Tamiya Onodera, Michiaki Tatsubori
  • Patent number: 8701097
    Abstract: A compiler and method of optimizing code by partial inlining of a subset of blocks of called blocks of code into calling blocks of code. A restart of the called blocks of code is provided for the case where non-inlined blocks of code are reached at run time. Blocks selected for partial inlining may include global side effects depending on the computer program environment. Global side effects in the selected blocks of code leading to a restart are sanitized in order to defer changes to the global state of the computer program.
    Type: Grant
    Filed: February 8, 2011
    Date of Patent: April 15, 2014
    Assignee: International Business Machines Corporation
    Inventors: Patrick R. Doyle, James I. A. Gartley, Derek B. Inglis, Vijay Sundaresan
  • Patent number: 8667507
    Abstract: Systems and methods of passing arguments between client and server contexts may provide for detecting an in-process call between a client and a server, wherein the client and the server share a common virtual machine instance. An object copy from a source object of the in-process call to a destination object can be conducted based on an internal class structure of the virtual machine instance. The object copy procedure may be repeated for a plurality of source objects of the in-process call.
    Type: Grant
    Filed: March 21, 2012
    Date of Patent: March 4, 2014
    Assignee: International Business Machines Corporation
    Inventors: Aruna A. Kalagananam, Derek B. Inglis, Vijay Sundaresan
  • Patent number: 8516501
    Abstract: Systems and methods of passing arguments between client and server contexts may provide for detecting an in-process call between a client and a server, wherein the client and the server share a common virtual machine instance. An object copy from a source object of the in-process call to a destination object can be conducted based on an internal class structure of the virtual machine instance. The object copy procedure may be repeated for a plurality of source objects of the in-process call.
    Type: Grant
    Filed: August 11, 2010
    Date of Patent: August 20, 2013
    Assignee: International Business Machines Corporation
    Inventors: Aruna A. Kalagananam, Derek B. Inglis, Vijay Sundaresan
  • Patent number: 8387031
    Abstract: A mechanism is provided for operating a computing system, in which an inner virtual machine translates first instructions, which are supported by the inner virtual machine, into second instructions, which are supported by an outer virtual machine. The mechanism encodes, in the inner virtual machine, third instructions into the second instructions into which the first instructions are translated, the third instructions including hints for facilitating an execution of the second instructions, and, in an event the hints are supported by the outer virtual machine, initiating the execution of the second instructions while utilizing the hints by the outer virtual machine to achieve an increased efficiency of the execution of the second instructions.
    Type: Grant
    Filed: January 23, 2009
    Date of Patent: February 26, 2013
    Assignee: International Business Machines Corporation
    Inventors: Derek B. Inglis, Marcel Mitran, Ali I. Sheikh, Kevin A. Stoodley
  • Patent number: 8286152
    Abstract: Systems, methods, and computer products for just-in-time compilation for virtual machine environments for fast applications start-up and maximal run-time performance. Exemplary embodiments include a just in time compilation method for a virtual machine environment coupled to a memory, including identifying a program structure for compilation, creating a low optimization compiled version of the program structure that is relocatable in the memory, storing into a persistent cache the low optimization compiled version of the program structure that is relocatable and relocating the low optimization compiled version of the program structure into a virtual machine address space in the memory, wherein relocating the low optimization compiled version of the program structure includes transforming the low optimization compiled version to a compiled version with fixed addresses in the memory that can be executed.
    Type: Grant
    Filed: August 22, 2007
    Date of Patent: October 9, 2012
    Assignee: International Business Machines Corporation
    Inventors: Nikola Grcevski, Derek B. Inglis, Marius Pirvu, Mark G. Stoodley
  • Publication number: 20120192206
    Abstract: Systems and methods of passing arguments between client and server contexts may provide for detecting an in-process call between a client and a server, wherein the client and the server share a common virtual machine instance. An object copy from a source object of the in-process call to a destination object can be conducted based on an internal class structure of the virtual machine instance. The object copy procedure may be repeated for a plurality of source objects of the in-process call.
    Type: Application
    Filed: March 21, 2012
    Publication date: July 26, 2012
    Applicant: INTERNATIONAL BUSINESS MACHINES CORPORATION
    Inventors: Derek B. Inglis, Aruna A. Kalagananam, Vijay Sundaresan
  • Patent number: 8201158
    Abstract: Under the present invention, program code is examined (statically or dynamically) for characteristics indicative of a potential to generate multiple threads. If none are found, single threaded optimization(s) such as desynchronization, optimization of globals, etc., can be implemented. In addition, if the program code is later revealed to have the potential to generate multiple threads, the single threaded optimization(s) can be corrected to avoid incorrect execution.
    Type: Grant
    Filed: April 9, 2008
    Date of Patent: June 12, 2012
    Assignee: International Business Machines Corporation
    Inventors: Derek B. Inglis, Trent A. Gray-Donald, Kevin A. Stoodley, Vijay Sundaresan
  • Publication number: 20120117549
    Abstract: A compiler and method of optimizing code by partial inlining of a subset of blocks of called blocks of code into calling blocks of code. A restart of the called blocks of code is provided for the case where non-inlined blocks of code are reached at run time. Blocks selected for partial inlining may include global side effects depending on the computer program environment. Global side effects in the selected blocks of code leading to a restart are sanitized in order to defer changes to the global state of the computer program.
    Type: Application
    Filed: February 8, 2011
    Publication date: May 10, 2012
    Applicant: INTERNATIONAL BUSINESS MACHINES CORPORATION
    Inventors: Patrick R. Doyle, James I.A. Gartley, Derek B. Inglis, Vijay Sundaresan
  • Publication number: 20120096447
    Abstract: A technique for comprehensively acquiring calling-context information at a low cost. Call site IDs are held for each thread as a call history and used as context information. At the time of calling a method, the call history existing in a current frame is shifted left, and stacked in a new frame, with the call site ID of the call site put in the lower bits. At the time of returning from the method, the value of the original call history is returned by returning the frame. At the time of performing a virtual call, call history information is recorded into a call position profile table used to identify a method to be inlined at the time of performing JIT compiling, in addition to determined jump destination information and the number of calls.
    Type: Application
    Filed: October 14, 2011
    Publication date: April 19, 2012
    Applicant: International Business Machines Corporation
    Inventors: Derek B. Inglis, Kiyokuni Kawachiya, Tamiya Onodera, Michiaki Tatsubori
  • Publication number: 20120054725
    Abstract: A method and system for code generation and inlining. The method includes: scanning a code, where the code includes a method; determining whether the method includes a branch if the method is too large in size to be inlined, where the branch is based on runtime types of argument; profiling runtime types of actual arguments at a call site in the method if the method includes the branch; generating a polymorphic inline cache (PIC) code from a plurality of arguments, where the plurality of arguments are based on a result of the profiling step; generating a specialized method for a frequently appearing combination of the runtime types of argument and arguments that can be invoked from the PIC code; and inlining body of the specialized method into the call site if the specialized method has a body size within a permissible range.
    Type: Application
    Filed: August 30, 2011
    Publication date: March 1, 2012
    Applicant: International Business Machines Corporation
    Inventors: Derek B. Inglis, Kiyokuni Kawachiya, Tamiya Onodera, Michiaki Tatsubori
  • Publication number: 20120042325
    Abstract: Systems and methods of passing arguments between client and server contexts may provide for detecting an in-process call between a client and a server, wherein the client and the server share a common virtual machine instance. An object copy from a source object of the in-process call to a destination object can be conducted based on an internal class structure of the virtual machine instance. The object copy procedure may be repeated for a plurality of source objects of the in-process call.
    Type: Application
    Filed: August 11, 2010
    Publication date: February 16, 2012
    Applicant: INTERNATIONAL BUSINESS MACHINES CORPORATION
    Inventors: Derek B. Inglis, Aruna A. Kalagananam, Vijay Sundaresan
  • Publication number: 20100192137
    Abstract: A computer readable storage medium is provided having executable instructions stored thereon for executing a method of operating a computing system, in which an inner virtual machine translates first instructions, which are supported by the inner virtual machine, into second instructions, which are supported by an outer virtual machine. The method includes encoding, in the inner virtual machine, third instructions into the second instructions into which the first instructions are translated, the third instructions including hints for facilitating an execution of the second instructions, and, in an event the hints are supported by the outer virtual machine, initiating the execution of the second instructions while utilizing the hints by the outer virtual machine to achieve an increased efficiency of the execution of the second instructions.
    Type: Application
    Filed: January 23, 2009
    Publication date: July 29, 2010
    Applicant: INTERNATIONAL BUSINESS MACHINES CORPORATION
    Inventors: Derek B. Inglis, Marcel Mitran, Ali I. Sheikh, Kevin A. Stoodley
  • Patent number: 7765527
    Abstract: A method, system and computer program product for collecting profiling information during runtime of a multithreaded program. According to the method, a plurality of instructions of the program for execution in an application thread are first received; a plurality of variable size profiling records are then stored in a buffer assigned exclusively to the application thread during execution of the plurality of instructions; and the plurality of profiling records in the buffer are then processed. The program may be written in Java bytecode for execution in a Java virtual machine with the processing of profiling buffers performed by a component of a JIT compiler for insertion into a repository in internal JIT format, e.g. a hash table, for later optimization processing.
    Type: Grant
    Filed: September 29, 2005
    Date of Patent: July 27, 2010
    Assignee: International Business Machines Corporation
    Inventors: Peter W. Burka, Derek B. Inglis, Nikola Grcevski
  • Publication number: 20090055821
    Abstract: Systems, methods, and computer products for just-in-time compilation for virtual machine environments for fast applications start-up and maximal run-time performance. Exemplary embodiments include a just in time compilation method for a virtual machine environment coupled to a memory, including identifying a program structure for compilation, creating a low optimization compiled version of the program structure that is relocatable in the memory, storing into a persistent cache the low optimization compiled version of the program structure that is relocatable and relocating the low optimization compiled version of the program structure into a virtual machine address space in the memory, wherein relocating the low optimization compiled version of the program structure includes transforming the low optimization compiled version to a compiled version with fixed addresses in the memory that can be executed.
    Type: Application
    Filed: August 22, 2007
    Publication date: February 26, 2009
    Applicant: INTERNATIONAL BUSINESS MACHINES CORPORATION
    Inventors: Nikola Grcevski, Derek B. Inglis, Marius Pirvu, Mark G. Stoodley
  • Publication number: 20080189692
    Abstract: Under the present invention, program code is examined (statically or dynamically) for characteristics indicative of a potential to generate multiple threads. If none are found, single threaded optimization(s) such as desynchronization, optimization of globals, etc., can be implemented. In addition, if the program code is later revealed to have the potential to generate multiple threads, the single threaded optimization(s) can be corrected to avoid incorrect execution.
    Type: Application
    Filed: April 9, 2008
    Publication date: August 7, 2008
    Inventors: Derek B. Inglis, Trent A. Gray-Donald, Kevin A. Stoodley, Vijay Sundaresan
  • Patent number: 7395530
    Abstract: Under the present invention, program code is examined (statically or dynamically) for characteristics indicative of a potential to generate multiple threads. If none are found, single threaded optimization(s) such as desynchronization, optimization of globals, etc., can be implemented. In addition, if the program code is later revealed to have the potential to generate multiple threads, the single threaded optimization(s) can be corrected to avoid incorrect execution.
    Type: Grant
    Filed: August 30, 2004
    Date of Patent: July 1, 2008
    Assignee: International Business Machines Corporation
    Inventors: Derek B. Inglis, Trent A. Gray-Donald, Kevin A. Stoodley, Vijay Sundaresan
  • Patent number: 6457172
    Abstract: A compiler having one or more separate components, each of which contains the source code of the compiler which is responsible for implementing a corresponding data representation. These components are responsible for all of the parts of compilation which depend on the corresponding data representation. In one aspect of the present invention, a compiler comprises: a converter for converting program code to object code; and a data representation implementor for isolating within the compiler information that relates to representation of data at runtime, wherein the converter accesses the data representation implementor to obtain information that is needed for converting any portion of the program code that is dependent on representation of data at runtime.
    Type: Grant
    Filed: April 13, 1999
    Date of Patent: September 24, 2002
    Assignee: International Business Machines Corporation
    Inventors: Ian Carmichael, Derek B. Inglis, Michael Karasick, Vincent J. Kruskal, Harold L. Ossher, David J. Streeter