Patent classifications
G06F8/4434
SELECTIVE OBJECT SENSITIVE POINTS-TO ANALYSIS
A method for points-to program analysis includes extracting a kernel from a program, performing a fixed object sensitive points to analysis of the kernel to obtain fixed analysis results, and assigning, for a first candidate object in the kernel, a first context depth to the first candidate object. The candidate objects are identified using the fixed analysis results. The method further includes assigning, for a second candidate object, a second context depth to the second candidate object. The second context depth is different than the first context depth. The method further includes performing, to obtain selective analysis results, a selective object sensitive points to analysis using the first context depth for the first candidate object and the second context depth for the second candidate object, and performing an action based on the selective analysis results.
CUSTOM-BUILT PROCESS ENGINE WITH MINIMAL MEMORY AND DISK RESOURCE CONSUMPTION
A minimum set of process engine components needed to perform a process application is determined. An executable code that includes the determined minimum set of process engine components and omits at least a subset of process engine components not included in the determined minimum set of process engine components is compiled. The executable code is deployed to a device.
Code caching system
Systems and methods for code caching are provided. A first indication of primary source code awaiting execution is received. A resource cache is checked for cached data corresponding to the primary source code. Upon a cache miss in the resource cache, a first executable code compiled from the primary source code is obtained. A secondary source code referenced in the primary source code is selected. A second executable code compiled from the selected secondary source code is obtained. The first executable code and the second executable code are serialized into serialized code. The serialized code is stored as cached data in the resource cache.
Assigning operational codes to lists of values of control signals selected from a processor design based on end-user software
End-user software is used to select lists of values of control signals from a predetermined design of a processor, and a unique value of an opcode is assigned to each selected list of values of control signals. The assignments, of opcode values to lists of values of control signals, are used to create a new processor design customized for the end-user software, followed by synthesis, place and route, and netlist generation based on the new processor design, followed by configuring an FPGA based on the netlist, followed by execution of the end-user software in customized processor implemented by the FPGA. Different end-user software may be used as input to generate different assignments, of opcode values to lists of control signal values, followed by generation of different netlists. The different netlists may be used at different times, to reconfigure the same FPGA, to execute different end-user software optimally at different times.
METHOD AND SYSTEM FOR OPTIMIZING ACCESS TO CONSTANT MEMORY
The disclosed systems, structures, and methods are directed to optimizing memory access to constants in heterogeneous parallel computers, including systems that support OpenCL. This is achieved in an optimizing compiler that transforms program scope constants and constants at the outermost scope of kernels into implicit constant pointer arguments. The optimizing compiler also attempts to determine access patterns for constants at compile-time and places the constants in a variety of memory types available in a compute device architecture based on these access patterns.
Reducing file space through the degradation of file content
Disclosed are various embodiments for a storage optimizer executable in the at least one computing device for degradation files. The storage optimizer comprises logic that facilitates receiving a file from a user for storage in a memory and logic that generates network content to be presented in at least one user interface for receiving at least one selection for degrading the file. The at least one selection includes a degradation scheme and a degradation schedule. The storage optimizer further comprises logic that implements the at least one selection for degrading the file according to the degradation scheme and the degradation schedule.
Compressed firmware update
It may be determined that a payment reader requires a firmware update, which may be transmitted to the payment reader as compressed firmware update blocks. The payment reader may receive a first portion of set of the compressed firmware update blocks. The payment reader may decompress the first portion and determine a partial firmware offset associated with the first portion. If the firmware update is incomplete, the payment reader may transmit that partial firmware offset to a second device. Based on this partial of firmware offset and an offset table that associates compressed firmware offsets with decompressed firmware offsets, the payment reader receive a second portion of compressed firmware update blocks to send to the payment reader. The payment reader may determine that entire update has been received and update its firmware.
Automatic reference counting
Methods for enabling automatic reference counting are disclosed. A source code is searched for a particular pattern via a compiler associated with a computer system, wherein the source code is written in an existing language and wherein the particular pattern is for a reference associating an object with a portion of memory. The particular pattern is recognized at the computer system. The particular pattern is replaced with an automatic reference counting implementation at the computer system. The source code is executed with the automatic reference counting implementation.
CODE-SIZE AWARE FUNCTION SPECIALIZATION
A method for compiling software code comprises scanning call sites within the code to identify a function that is called with at least one constant argument and creating a list of each call site associated with the function and sets of constant arguments passed to the function. If any common subsets of the constant arguments are shared across a plurality of call sites, a size of the function is estimated. selecting any sets of constant arguments that are used only in one call site. The sizes of specialized functions covering sets of constant arguments that are used in only one call site is estimated. The method comprises creating a first set of specialized versions of the function covering one or more sets of constant arguments that are used in only one call site, and if any common subsets of the constant arguments exist, creating a second set of specialized versions of the function.
GRAPH-BASED VECTORIZATION FOR SOFTWARE CODE OPTIMIZATIONS
A software code optimizer automatically detects inefficiencies in software code and corrects them. Generally, the software code optimizer converts software code into a graph representing the workflows and relationships in the software code. The graph is then converted into vectors that represent each workflow in the software code. The vectors are assembled into a matrix that represents the software code. The matrix may be stored in a cluster in a database as an example of optimized software code or be compared with other matrices stored as clusters in the database to determine whether the software code is optimized. The software code optimizer can change the software code to be more efficient if a matrix for an optimized version of the software code is found in the database.