Patents by Inventor Daniel J. Heidinga
Daniel J. Heidinga 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: 10846147Abstract: Techniques are disclosed for providing class-specific parameters for spinlocks in an application executing in a runtime environment. During execution of the application, a blocking portion of code is entered for an object in the application. The runtime environment determines that one or more spinlock parameters is enabled for the object of a class. The runtime environment applies the determined spinlock parameters to the object. A spinlock algorithm is performed using the applied spinlock parameters.Type: GrantFiled: November 1, 2016Date of Patent: November 24, 2020Assignee: International Business Machines CorporationInventors: Daniel J. Heidinga, Angela Lin, Babneet Singh
-
Patent number: 10649797Abstract: Approaches presented herein enable providing online method handle deduplication by determining whether a method handle to be created is equivalent to an existing method handle in an equivalence pool. Specifically, in response to a request to create a method handle, a set of parameters including a method handle map, a class, and one or more arguments of the method handle to be created are accepted. A method handle of the class is obtained. One or more existing unique method handles found in an equivalence pool are compared to the method handle to be created to determine whether an equivalence exists. When an equivalence is found between an existing unique method handle and the method handle to be created, the existing unique method handle is returned.Type: GrantFiled: January 2, 2019Date of Patent: May 12, 2020Assignee: International Business Machines CorporationInventors: David D. Bremner, Daniel J. Heidinga, Shijie Xu
-
Publication number: 20190138332Abstract: Approaches presented herein enable providing online method handle deduplication by determining whether a method handle to be created is equivalent to an existing method handle in an equivalence pool. Specifically, in response to a request to create a method handle, a set of parameters including a method handle map, a class, and one or more arguments of the method handle to be created are accepted. A method handle of the class is obtained. One or more existing unique method handles found in an equivalence pool are compared to the method handle to be created to determine whether an equivalence exists. When an equivalence is found between an existing unique method handle and the method handle to be created, the existing unique method handle is returned.Type: ApplicationFiled: January 2, 2019Publication date: May 9, 2019Inventors: David D. Bremner, Daniel J. Heidinga, Shijie Xu
-
Patent number: 10235165Abstract: An embodiments of the invention may include a method, computer program product and computer system for optimizing computer programs. The embodiment may include a computing device that determines a program code of a computer program contains at least two consecutive method handles. The embodiment may determine that the at least two consecutive method handles can be optimized. The embodiment may optimize the at least two consecutive method handles. Optimizing the at least two consecutive method handles may include one or more of: replacing the at least two consecutive method handles with one or more different commands; and reordering the at least two consecutive method handles.Type: GrantFiled: November 9, 2016Date of Patent: March 19, 2019Assignee: International Business Machines CorporationInventors: Michael H. Dawson, Jinghua Feng, Daniel J. Heidinga
-
Patent number: 10228957Abstract: Approaches presented herein enable providing online method handle deduplication by determining whether a method handle to be created is equivalent to an existing method handle in an equivalence pool. Specifically, in response to a request to create a method handle, a set of parameters including a method handle map, a class, and one or more arguments of the method handle to be created are accepted. A method handle of the class is obtained. One or more existing unique method handles found in an equivalence pool are compared to the method handle to be created to determine whether an equivalence exists. When an equivalence is found between an existing unique method handle and the method handle to be created, the existing unique method handle is returned.Type: GrantFiled: January 20, 2017Date of Patent: March 12, 2019Assignee: International Business Machines CorporationInventors: David D. Bremner, Daniel J. Heidinga, Shijie Xu
-
Publication number: 20180210743Abstract: Approaches presented herein enable providing online method handle deduplication by determining whether a method handle to be created is equivalent to an existing method handle in an equivalence pool. Specifically, in response to a request to create a method handle, a set of parameters including a method handle map, a class, and one or more arguments of the method handle to be created are accepted. A method handle of the class is obtained. One or more existing unique method handles found in an equivalence pool are compared to the method handle to be created to determine whether an equivalence exists. When an equivalence is found between an existing unique method handle and the method handle to be created, the existing unique method handle is returned.Type: ApplicationFiled: January 20, 2017Publication date: July 26, 2018Inventors: David D. Bremner, Daniel J. Heidinga, Shijie Xu
-
Publication number: 20180203853Abstract: A method, computer program product, and system includes a processor(s) generating an interface to enable communication of data elements from a first computing resource to a second computing resource. An element of the data is a data structure of variable size. To generate the interface, the processor(s) requests a layout that includes a variable array. The processor(s) locates a layout referenced by the variable array; the layout for the variable array can accommodate the data structure of variable size. The processor(s) generates the layout, which includes generating a runtime class for an element type of the data structure of variable size and generating a runtime class for the variable array. The processor generates an enclosing layout that indicates to the second computing resource, delineations between the data elements. The processor(s) communicates, via the interface, the data elements from the first computing resource to the second computing resource.Type: ApplicationFiled: January 13, 2017Publication date: July 19, 2018Inventors: Oluwatobi A. AJILA, Daniel J. HEIDINGA
-
Patent number: 10001979Abstract: Embodiments of the present invention provide methods, computer program products, and systems for optimizing virtual calls. Embodiments of the present invention can be used to receive a virtual call associated with a first implementation method and identify a virtual call associated with a second implementation method that appears to have similar functionality to the first implementation method. Embodiments of the present invention can determine whether the virtual call associated with the first implementation method and the virtual call associated with the second implementation method produce the same result and, responsive to determining that the virtual call associated with the first implementation method and the virtual call associated with the second implementation method produce the same result, use a result of the virtual call associated with the first implementation method as a result of the virtual call associated with the second implementation method.Type: GrantFiled: November 25, 2015Date of Patent: June 19, 2018Assignee: International Business Machines CorporationInventors: Patrick R. Doyle, Daniel J. Heidinga, Vijay Sundaresan
-
Publication number: 20180121255Abstract: Techniques are disclosed for providing class-specific parameters for spinlocks in an application executing in a runtime environment. During execution of the application, a blocking portion of code is entered for an object in the application. The runtime environment determines that one or more spinlock parameters is enabled for the object of a class. The runtime environment applies the determined spinlock parameters to the object. A spinlock algorithm is performed using the applied spinlock parameters.Type: ApplicationFiled: November 1, 2016Publication date: May 3, 2018Inventors: Daniel J. HEIDINGA, Angela LIN, Babneet SINGH
-
Publication number: 20170147304Abstract: Embodiments of the present invention provide methods, computer program products, and systems for optimizing virtual calls. Embodiments of the present invention can be used to receive a virtual call associated with a first implementation method and identify a virtual call associated with a second implementation method that appears to have similar functionality to the first implementation method. Embodiments of the present invention can determine whether the virtual call associated with the first implementation method and the virtual call associated with the second implementation method produce the same result and, responsive to determining that the virtual call associated with the first implementation method and the virtual call associated with the second implementation method produce the same result, use a result of the virtual call associated with the first implementation method as a result of the virtual call associated with the second implementation method.Type: ApplicationFiled: November 25, 2015Publication date: May 25, 2017Inventors: Patrick R. Doyle, Daniel J. Heidinga, Vijay Sundaresan
-
Publication number: 20170139689Abstract: A method for caching a MethodType object. The method may include identifying, by a processor, a plurality of classes associated with a method descriptor string. The method may also include determining the identified plurality of classes are loaded into a language runtime environment associated with an object oriented programming language. The method may further include creating the MethodType object using the identified plurality of classes. The method may also include storing the created MethodType object in a cache. The method may further include transmitting the stored MethodType object to the language runtime environment.Type: ApplicationFiled: November 12, 2015Publication date: May 18, 2017Inventors: Daniel J. Heidinga, Bjøm Vàrdal
-
Patent number: 9632755Abstract: A computer-implemented method includes receiving an invocation of an invoked interface associated with a class, identifying, based on the class, a plurality of interface lookup artifacts and a cached interface lookup artifact, and comparing the invoked interface with a cache interface. The cache interface is associated with the cached interface artifact. The computer-implemented method further includes, responsive to the invoked interface matching the cache interface, returning the cached interface artifact, and responsive to the invoked interface not matching the cache interface, searching the plurality of interface lookup artifacts until finding a matching interface lookup artifact. The matching interface lookup artifact is associated with a matching interface that matches the invoked interface. Responsive to finding the matching interface lookup artifact, returning the matching interface lookup artifact and updating the cached interface lookup artifact to the matching interface lookup artifact.Type: GrantFiled: October 6, 2015Date of Patent: April 25, 2017Assignee: International Business Machines CorporationInventors: Patrick R. Doyle, Daniel J. Heidinga, Bjoern Vaardal
-
Publication number: 20170097811Abstract: A computer-implemented method includes receiving an invocation of an invoked interface associated with a class, identifying, based on the class, a plurality of interface lookup artefacts and a cached interface lookup artefact, and comparing the invoked interface with a cache interface. The cache interface is associated with the cached interface artefact. The computer-implemented method further includes, responsive to the invoked interface matching the cache interface, returning the cached interface artefact, and responsive to the invoked interface not matching the cache interface, searching the plurality of interface lookup artefacts until finding a matching interface lookup artefact. The matching interface lookup artefact is associated with a matching interface that matches the invoked interface. Responsive to finding the matching interface lookup artefact, returning the matching interface lookup artefact and updating the cached interface lookup artefact to the matching interface lookup artefact.Type: ApplicationFiled: October 6, 2015Publication date: April 6, 2017Inventors: Patrick R. Doyle, Daniel J. Heidinga, Bjoern Vaardal
-
Publication number: 20170090920Abstract: An embodiments of the invention may include a method, computer program product and computer system for optimizing computer programs. The embodiment may include a computing device that determines a program code of a computer program contains at least two consecutive method handles. The embodiment may determine that the at least two consecutive method handles can be optimized. The embodiment may optimize the at least two consecutive method handles. Optimizing the at least two consecutive method handles may include one or more of: replacing the at least two consecutive method handles with one or more different commands; and reordering the at least two consecutive method handles.Type: ApplicationFiled: November 9, 2016Publication date: March 30, 2017Inventors: Michael H. Dawson, Jinghua Feng, Daniel J. Heidinga
-
Patent number: 9588778Abstract: Embodiments of the present invention disclose a method, system, and computer program product for a JNI object access system. A computer receives a JNI reference and obtains the pointer data and call site of the referenced object. The computer determines whether a record of the object and call site exist and, if not, the respective records are created. The computer applies a heuristic analysis of the object and call site in which it determines whether the object is larger than a threshold size, whether the object is part of a particular region of the heap, whether the call site is associated with a read-only or a read-write function, and whether the object or call site has caused more non-moving garbage collections than a threshold number. Based on the heuristic, the computer either copies the object data or pins the object and any non-moving garbage collections are recorded.Type: GrantFiled: June 29, 2015Date of Patent: March 7, 2017Assignee: International Business Machines CorporationInventors: Graham A. Chapman, Charles R. Gracie, Daniel J. Heidinga, Karl M. Taylor
-
Patent number: 9569206Abstract: An embodiments of the invention may include a method, computer program product and computer system for optimizing computer programs. The embodiment may include a computing device that determines a program code of a computer program contains at least two consecutive method handles. The embodiment may determine that the at least two consecutive method handles can be optimized. The embodiment may optimize the at least two consecutive method handles. Optimizing the at least two consecutive method handles may include one or more of: replacing the at least two consecutive method handles with one or more different commands; and reordering the at least two consecutive method handles.Type: GrantFiled: September 29, 2015Date of Patent: February 14, 2017Assignee: International Business Machines CorporationInventors: Michael H. Dawson, Jinghua Feng, Daniel J. Heidinga
-
Publication number: 20160378508Abstract: Embodiments of the present invention disclose a method, system, and computer program product for a JNI object access system. A computer receives a JNI reference and obtains the pointer data and call site of the referenced object. The computer determines whether a record of the object and call site exist and, if not, the respective records are created. The computer applies a heuristic analysis of the object and call site in which it determines whether the object is larger than a threshold size, whether the object is part of a particular region of the heap, whether the call site is associated with a read-only or a read-write function, and whether the object or call site has caused more non-moving garbage collections than a threshold number. Based on the heuristic, the computer either copies the object data or pins the object and any non-moving garbage collections are recorded.Type: ApplicationFiled: June 29, 2015Publication date: December 29, 2016Inventors: Graham A. Chapman, Charles R. Gracie, Daniel J. Heidinga, Karl M. Taylor
-
Patent number: 9418004Abstract: Embodiments of the present invention disclose a method, system, and computer program product for a JNI object access system. A computer receives a JNI reference and obtains the pointer data and call site of the referenced object. The computer determines whether a record of the object and call site exist and, if not, the respective records are created. The computer applies a heuristic analysis of the object and call site in which it determines whether the object is larger than a threshold size, whether the object is part of a particular region of the heap, whether the call site is associated with a read-only or a read-write function, and whether the object or call site has caused more non-moving garbage collections than a threshold number. Based on the heuristic, the computer either copies the object data or pins the object and any non-moving garbage collections are recorded.Type: GrantFiled: October 29, 2015Date of Patent: August 16, 2016Assignee: International Business Machines CorporationInventors: Graham A. Chapman, Charles R. Gracie, Daniel J. Heidinga, Karl M. Taylor
-
Patent number: 9417856Abstract: A method for obtaining accurate call path information in a mixed-mode environment where interpreted methods and non-interpreted methods can call one another is disclosed. In one embodiment, such a method includes generating an event and recording it in a buffer when an interpreted method calls an interpreted method. The method also generates an event and records it in the buffer when an interpreted method calls a non-interpreted method. The method further generates an event and records it in the buffer when a non-interpreted method calls an interpreted method. The method refrains from generating an event when a non-interpreted method calls a non-interpreted method. A corresponding apparatus and computer program product are also disclosed.Type: GrantFiled: March 15, 2012Date of Patent: August 16, 2016Assignee: International Business Machines CorporationInventors: Graham A. Chapman, James I. Gartley, Daniel J. Heidinga, Vijay Sundaresan
-
Patent number: 9092237Abstract: An illustrative embodiment for serialization of pre-initialized objects receives a source code definition of a class, identifies a set of constants associated with the class in the source code to form a set of identified constants, creates a result object corresponding to each constant in the set of identified constants, and compiles the source code into a compiled form of the class. The illustrative embodiment further serializes each result object into a resource file associated with the class to form a set of serialized objects and replaces, in the compiled form of the class, each reference to a respective constant associated with the class from the set of identified constants with a corresponding dynamic instruction using a respective serialized object in the set of serialized objects.Type: GrantFiled: August 20, 2012Date of Patent: July 28, 2015Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATIONInventors: Peter W. Burka, Daniel J. Heidinga, Karl M. Taylor, Olivier P. Thomann