G06F9/4491

CLASS SPLITTING IN OBJECT-ORIENTED ENVIRONMENTS
20190324782 · 2019-10-24 ·

Embodiments of the present invention disclose a method, computer program product, and system for class splitting in object-oriented environments in which objects are created by classes. Data is analyzed, in response to generating an instance of an original class in a code component. Fields are separated into sets based on the code paths that access the fields. A split class is generated for a set of fields which shares a common interface with the original class. Cells are replaced in the code component to the original class with a split class.

Method and Device for Preloading Application, Storage Medium, and Terminal Device
20190196849 · 2019-06-27 ·

A method for preloading an application, a storage medium, and a terminal device are provided. The method includes the following. In response to a target application being detected to be closed, current state feature information of a terminal device is acquired. The current state feature information is compared with historical state feature information of the terminal device when the target application was closed. Target historical state feature information closest to the current state feature information is determined from within the historical state feature information according to a comparison result. The target application is preloaded, in response to determining that the target application is about to be launched again according to a historical usage regularity corresponding to the target historical state feature information.

DISTRIBUTED AGENT TO COLLECT INPUT AND OUTPUT DATA ALONG WITH SOURCE CODE FOR SCIENTIFIC KERNELS OF SINGLE-PROCESS AND DISTRIBUTED SYSTEMS
20190121624 · 2019-04-25 ·

An improved software optimization tool framework is provided that, when executed, creates software agents that attach themselves to all running instances of a user-specified application and/or process, be it in a single machine or across multiple machines (e.g. in a computer cluster). Once the software agents attach, for each attached application and/or process, the tool can be configured to capture the input and output data of specified target sections of code for the specified application or process. In an embodiment, a software programmer may want to optimize a specific target section of code that may comprise a single function or multiple functions or code portions. Based on pre-identified code sections, the tool can write captured input and output data into binary files, along with the target sections of code, and build an optimization framework around the input and output data, including the targeted sections of code. An optimization engineer can then use this optimization framework to develop optimized versions of the target code sections and can further test the optimized code section against actual data and results obtained from original runs.

Creating optimized shortcuts

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 INFERENCE OPTIMIZATION

Operations include (a) identifying bounds corresponding to two or more inference variables corresponding to a nested method invocation context, (b) determining that resolution of a first inference variable can be determined as a function of a resolution of a second inference variable, (c) propagating bounds corresponding to the second inference variable from the nested method invocation context to an outer method invocation context without propagating bounds corresponding to the first inference variable, (d) resolving a constraint set to resolve the second inference variable, and (e) resolving the first inference variable based on the resolution of the second inference variable.

Reducing call stack usage for future object completions
12099870 · 2024-09-24 · ·

Reducing call stack usage for future object completions is disclosed herein. In one example, a processor device of a computing device employs a completion queue when managing completions of future objects. When a future object is determined to have a status of complete, the processor device determines whether the current thread of the future object is associated with a completion queue. If so, a completion operation of the future object is enqueued in the completion queue. If the current thread is not associated with a completion queue, one is created and associated with the current thread, and the completion operation of the future object is performed. After completion, if the completion queue is not empty, any enqueued completion operations are dequeued and performed. Once the completion queue is empty, the completion queue is removed.

Type inference optimization

Operations include (a) identifying bounds corresponding to two or more inference variables corresponding to a nested method invocation context, (b) determining that resolution of a first inference variable can be determined as a function of a resolution of a second inference variable, (c) propagating bounds corresponding to the second inference variable from the nested method invocation context to an outer method invocation context without propagating bounds corresponding to the first inference variable, (d) resolving a constraint set to resolve the second inference variable, and (e) resolving the first inference variable based on the resolution of the second inference variable.

Symmetrical dimensions in context-oriented programming to optimize software object execution

A method, system, and/or computer program product optimizes execution of a computation. Multiple slots, each of which is a container for information, are defined. A coordinate tuple is defined for each of the multiple slots. The coordinate tuple describes a position of a slot along multiple dimensions in a slot space. The multiple dimensions describe roles for executing a software object, and each of the multiple dimensions has a same level of primacy such that no dimension has primacy over another dimension in the slot space. Multiple method slots are populated with software method objects that address different contexts and purposes as defined by coordinate tuples of the multiple method slots. Software method objects are retrieved from coordinate tuples in the slot space that match a defined context and purpose of a particular computation, which is propagated to a processor that is executing a particular software method object.

Hardware acceleration for inline caches in dynamic languages

Aspects include a computing devices, systems, and methods for hardware acceleration for inline caches in dynamic languages. An inline cache may be initialized for an instance of a dynamic software operation. A call of an initialized instance of the dynamic software operation may be executed by an inline cache hardware accelerator. The inline cache may be checked to determine that its data is current. When the data is current, the initialized instance of the dynamic software operation may be executed using the related inline cache data. When the data is not current, a new inline cache may be initialized for the instance of the dynamic software operation, including the not current data of a previously initialized instance of the dynamic software operation. The inline cache hardware accelerator may include an inline cache memory, a coprocessor, and/or a functional until one an inline cache pipeline connected to a processor pipeline.

Size dependent type in accessing dynamically typed array objects
09672152 · 2017-06-06 · ·

A method and an apparatus for providing a flat array type in an object model for dynamically typed programs are described. Whether an array object is of a flat array type can be dynamically tracked for a dynamic language based program. Array elements of an array object of the flat array type may be stored in an inline storage within an object cell of the array object. The inline storage may be limited by available memory space between adjacent object cells. The flat array type of an array object may be detected based on whether the inline storage has sufficient memory space to store elements of the array. An array object of the flay array type may allow array elements of the array object to be accessed within a object cell without additional memory loading via a pointer stored in the object cell.