Patents by Inventor Vijay Sundaresan
Vijay Sundaresan 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: 20180081651Abstract: A method and system for enhanced local communing optimization of compilation of a program. Within a first pass of a two pass approach, a determination is made as to where in the program to evaluate volatile expressions that can be commoned. In a second pass of the two pass approach, all remaining expressions that are not volatile expressions are commoned.Type: ApplicationFiled: November 16, 2017Publication date: March 22, 2018Inventors: Andrew J. Craik, Patrick R. Doyle, Vijay Sundaresan
-
Patent number: 9898268Abstract: A method and system for enhanced local commoning optimization of compilation of a program. Commoning of volatiles within an extended block for a particular memory model associated with a particular programming language is performed, using a two pass approach. Within a first pass, a determination is made as to where in the program to evaluate volatile expressions that can be commoned. In a second pass, all remaining expressions that are not volatile expressions are commoned.Type: GrantFiled: July 20, 2016Date of Patent: February 20, 2018Assignee: International Business Machines CorporationInventors: Andrew J. Craik, Patrick R. Doyle, Vijay Sundaresan
-
Publication number: 20180024823Abstract: A method and system for enhanced local commoning optimization of compilation of a program. Commoning of volatiles within an extended block for a particular memory model associated with a particular programming language is performed, using a two pass approach. Within a first pass, a determination is made as to where in the program to evaluate volatile expressions that can be commoned. In a second pass, all remaining expressions that are not volatile expressions are commoned.Type: ApplicationFiled: July 20, 2016Publication date: January 25, 2018Inventors: Andrew J. Craik, Patrick R. Doyle, Vijay Sundaresan
-
Publication number: 20180024822Abstract: A method and system for partial connection of iterations during loop unrolling during compilation of a program by a compiler. Unrolled loop iterations of a loop in the program are selectively connected, including redirecting, to the head of the loop, undesirable edges of a control flow from one iteration to a next iteration of the loop. Merges on a path of hot code are removed to increase a scope for optimization of the program. The head of the loop and a start of a replicated loop body of the loop are equivalent points of the control flow. A sequence of blocks on the path of hot code, unpolluted by a control flow of a path of cold code, is extended during the compilation. Information computed by an optimizer about the hot code in a first iteration is used to further optimize a second iteration, and the loop is further unrolled.Type: ApplicationFiled: July 20, 2016Publication date: January 25, 2018Inventors: Andrew J. Craik, Vijay Sundaresan
-
Publication number: 20170329619Abstract: Multi-byte compressed string representation embodiments define a String class control field identifying compression as enabled/disabled, and another control field, identifying a decompressed string created when compression enabled. On pattern matching by a compiler, noping tests based on null setting of stringCompressionFlag and registering a class loading assumption on a nop location. When arguments to a String class constructor are not compressible, a decompressed String is created and stringCompressionFlag initialized. Endian-aware helper methods for reading/writing byte and character values and helper methods for widening, narrowing, truncation, conversion and masking are defined. Enhanced String class constructors, when characters are not compressible, create a decompressed String, and initialize stringCompressionFlag triggering class load assumptions, overwriting all nopable patch points.Type: ApplicationFiled: May 13, 2016Publication date: November 16, 2017Inventors: Andrew J. CRAIK, Filip JEREMIC, Vijay SUNDARESAN
-
Publication number: 20170168781Abstract: A computer-implemented method for class load optimizing. The method determines whether a caller method within the class has a specific signature call using the context of the class. The method determines a callee method within the class using the context of the class. Furthermore, the method retrieves a class object of the class and converts the callee method to a second method, in response to the caller method having the specific signature, the callee method being of the specific signature and callee method being the first argument of the caller method.Type: ApplicationFiled: August 9, 2016Publication date: June 15, 2017Inventors: Patrick R. Doyle, Prashanth S. Krishna, Sathiskumar Palaniappan, Vijay Sundaresan
-
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
-
Patent number: 9507574Abstract: Expressions are selectively retrieved from memory during compilation by scanning code for expressions that can be effectively accessed directly from highly cached memory without needing to be loaded into a register, e.g., expressions that are not modified by the rest of the code. The scanning may include examining the use of the expression. Those expressions may be retrieved directly from the highly cached memory rather than being loaded into registers. This reduces compilation time.Type: GrantFiled: September 28, 2006Date of Patent: November 29, 2016Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATIONInventors: Marcel Mitran, Vijay Sundaresan, Alexander Vaseilevskiy
-
Patent number: 9471341Abstract: A computer-implemented method for class load optimizing. The method identifies a class in which a context can be determined at a compile time, using a compiler. The method determines whether a caller method within the class has a specific signature call using the context of the class. The method determines a callee method within the class using the context of the class. The method determines whether the callee method's receiver is a first argument of the caller method. Furthermore, the method retrieves a class object of the class and converts the callee method to a second method, in response to the caller method having the specific signature, the callee method being of the specific signature and callee method being the first argument of the caller method.Type: GrantFiled: December 11, 2015Date of Patent: October 18, 2016Assignee: International Business Machines CorporationInventors: Patrick R. Doyle, Prashanth S. Krishna, Sathiskumar Palaniappan, Vijay Sundaresan
-
Patent number: 9448778Abstract: A computer-implemented method, system, and computer program product for performing object collocation on a computer system are provided. The method includes analyzing a sequence of computer instructions for object allocations and uses of the allocated objects. The method further includes creating an allocation interference graph of object allocation nodes with edges indicating pairs of allocations to be omitted from collocation. The method also includes coloring the allocation interference graph such that adjacent nodes are assigned different colors, and creating an object allocation at a program point prior to allocations of a selected color from the allocation interference graph. The method additionally includes storing an address associated with the created object allocation in a collocation pointer, and replacing a use of each allocation of the selected color with a use of the collocation pointer to collocate multiple objects.Type: GrantFiled: July 30, 2014Date of Patent: September 20, 2016Assignee: International Business Machines CorporationInventors: Patrick Doyle, Pramod Ramarao, Vijay Sundaresan
-
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: 9389843Abstract: 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, 2013Date of Patent: July 12, 2016Assignee: International Business Machines CorporationInventors: Graham Alan Chapman, James Ian Andrew Gartley, Daniel Jonathan Heidinga, Vijay Sundaresan
-
Publication number: 20160162296Abstract: In an approach for decreasing an execution time of a computer code, one or more processors identify a long-form conditional branch that is included in a first region of a computer code. The one or more processors generate a long-form unconditional branch with a target that is a target of a long-form conditional branch. The one or more processors modify the long-form conditional branch to be a short-form conditional branch. The one or more processors insert the long-form unconditional branch into the computer code within a branch distance of the short-form conditional branch. The one or more processors modify a target of the short-form conditional branch to be a location of the long-form unconditional branch in the computer code.Type: ApplicationFiled: February 18, 2016Publication date: June 9, 2016Inventors: Patrick R. Doyle, Vijay Sundaresan
-
Patent number: 9298436Abstract: In an approach for decreasing an execution time of a computer code, one or more processors receive a computer code and identify a frequently executed region of the computer code. One or more processors identify a long-form conditional branch in the frequently executed region of the computer code that is infrequently taken. One or more processors generate a long-form unconditional branch with a target that is a target of the long-form conditional branch. One or more processors modify the long-form conditional branch to be a short-form conditional branch. One or more processors insert the long-form unconditional branch in the computer code within a branch distance of the short-form conditional branch. One or more processors modify a target of the short-form conditional branch to be a location of the long-form unconditional branch in the computer code.Type: GrantFiled: June 25, 2014Date of Patent: March 29, 2016Assignee: International Business Machines CorporationInventors: Patrick R. Doyle, Vijay Sundaresan
-
Publication number: 20160070570Abstract: A classloader cache class definition is obtained by a processor. The classloader cache class definition includes code that creates a classloader object cache that is referenced by a strong internal reference by a classloader object in response to instantiation of the classloader cache class definition. A classloader object cache is instantiated using the obtained classloader cache class definition. The strong internal reference is created at instantiation of the classloader object cache. A public interface to the classloader object cache is provided. The public interface to the classloader object cache operates as a weak reference to the classloader object cache and provides external access to the classloader object cache.Type: ApplicationFiled: November 18, 2015Publication date: March 10, 2016Inventors: Vijay Sundaresan, Andres H. Voldman
-
Patent number: 9268543Abstract: A process, a computer program product, and a computer system for efficient code cache management implemented by a just-in-time compiler are provided. Embodiments of the present invention provide a practical approach to compile effectively for methods that are frequently executed over a short time period but are subsequently not executed frequently. The disclosed approach reduces the detrimental effects of compilation of such infrequently executed methods on throughput and garbage collection pause times.Type: GrantFiled: September 23, 2014Date of Patent: February 23, 2016Assignee: International Business Machines CorporationInventors: Patrick R. Doyle, Marcel Mitran, Marius Pirvu, Kevin A. Stoodley, Vijay Sundaresan
-
Patent number: 9250865Abstract: A method, apparatus, and/or computer program product performs selective speculative class-based optimization through the use of a type propagation analysis of class. Responsive to a determination that the type of class is not a fixed type, a determination is made as to whether the class is sub-classed. Responsive to a determination the class is not sub-classed, a virtual synthetic property method is created. The virtual synthetic property method is accommodated in an enhanced java virtual machine using a stack frame type. The stack frame type has associated metadata for throwing an exception and an invisibility property. The virtual synthetic property method, along with a virtual guard, is inlined, and a slow path is created. The slow path handles executions of the virtual synthetic property method when sub-classes of the class, which override an implementation of the virtual synthetic property method, are loaded in the future.Type: GrantFiled: March 7, 2014Date of Patent: February 2, 2016Assignee: International Business Machines CorporationInventors: Mark G. Stoodley, Vijay Sundaresan
-
Patent number: 9250936Abstract: A method for creating an enhanced array is provided. An enhanced compiler generates an instrumented class file for an enhanced array class. The enhanced array class comprises at least one element class. The enhanced runtime loads the instrumented class file of the enhanced array class. The enhanced runtime loads a class file corresponding to the element class of the enhanced array class, and builds an internal data structure corresponding to the enhanced array class. An amount of memory storage is calculated for storing the enhanced array instance, and the amount of memory storage is allocated.Type: GrantFiled: May 20, 2014Date of Patent: February 2, 2016Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATIONInventors: Angela Lin, Ryan A. Sciampacone, Vijay Sundaresan, Karl M. Taylor
-
Patent number: 9244708Abstract: A method for creating an enhanced array is provided. An enhanced compiler generates an instrumented class file for an enhanced array class. The enhanced array class comprises at least one element class. The enhanced runtime loads the instrumented class file of the enhanced array class. The enhanced runtime loads a class file corresponding to the element class of the enhanced array class, and builds an internal data structure corresponding to the enhanced array class. An amount of memory storage is calculated for storing the enhanced array instance, and the amount of memory storage is allocated.Type: GrantFiled: August 29, 2014Date of Patent: January 26, 2016Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATIONInventors: Angela Lin, Ryan A. Sciampacone, Vijay Sundaresan, Karl M. Taylor
-
Patent number: 9239706Abstract: A method, apparatus, and/or computer program product performs selective speculative class-based optimization through the use of a type propagation analysis of class. Responsive to a determination that the type of class is not a fixed type, a determination is made as to whether the class is sub-classed. Responsive to a determination the class is not sub-classed, a virtual synthetic property method is created. The virtual synthetic property method is accommodated in an enhanced java virtual machine using a stack frame type. The stack frame type has associated metadata for throwing an exception and an invisibility property. The virtual synthetic property method, along with a virtual guard, is inlined, and a slow path is created. The slow path handles executions of the virtual synthetic property method when sub-classes of the class, which override an implementation of the virtual synthetic property method, are loaded in the future.Type: GrantFiled: April 24, 2013Date of Patent: January 19, 2016Assignee: International Business Machines CorporationInventors: Mark G. Stoodley, Vijay Sundaresan