Class / Patent application number | Description | Number of patent applications / Date published |
717153000 | Dynamic (i.e., machine or object level) | 61 |
20080222622 | Isolating, managing and communicating with user interface elements - Various technologies and techniques are disclosed that allow a user interface in a managed runtime environment to display content from two or more different partitioned process spaces. A software application having a user interface operates a managed runtime environment. A window handle allows a user interface of the application to display content from different partitioned process spaces at a same time. Information from the partitioned process spaces can be integrated within the user interface while preserving a level of isolation between the partioned process spaces. This is accomplished by providing a first portion of a content container for the user interface with a host control that contains the window handle and resides in a first partitioned process space of a main window. A second portion of the content container is provided with a source control that provides the window handle and resides in a second partitioned process space. | 09-11-2008 |
20080229295 | Ensuring Maximum Code Motion of Accesses to DMA Buffers - A “kill” intrinsic that may be used in programs for designating specific data objects as having been “killed” by a preceding action is provided. The concept of a data object being “killed” is that the compiler is informed that no operations (e.g., loads and stores) on that data object, or its aliases, can be moved across the point in the program flow where the data object is designated as having been “killed.” The “kill” intrinsic limits the reordering capability of an optimization scheduler of a compiler with regard to operations performed on “killed” data objects. The “kill” intrinsic may be used with DMA operations. Data objects being DMA'ed from a local store of a processor may be “killed” through use of the “kill” intrinsic prior to submitting the DMA request. Data objects being DMA'ed to the local store of the processor may be “killed” after verifying the transfer completes. | 09-18-2008 |
20080244545 | METHOD FOR DETERMINING A CLOSE APPROXIMATE BENEFIT OF REDUCING MEMORY FOOTPRINT OF A JAVA APPLICATION - Changes in performance in a Java program are deduced from information related to garbage collection events of the program. Assumptions are made about the system, the application and garbage collection, and changes in performance that will result from modifying the program are deduced. | 10-02-2008 |
20080288929 | METHOD AND APPARATUS FOR RUN-TIME STATISTICS DEPENDENT PROGRAM EXECUTION USING SOURCE-CODING - Disclosed are a method and system for optimized, dynamic data-dependent program execution. The disclosed system comprises a statistics computer which computes statistics of the incoming data at the current time instant, where the said statistics include the probability distribution of the incoming data, the probability distribution over program modules induced by the incoming data, the probability distribution induced over program outputs by the incoming data, and the time-complexity of each program module for the incoming data, wherein the said statistics are computed on as a function of current and past data, and previously computed statistics; a plurality of alternative execution path orders designed prior to run-time by the use of an appropriate source code; a source code selector which selects one of the execution path orders as a function of the statistics computed by the statistics computer; a complexity measurement which measures the time-complexity of the currently selected execution path-order. | 11-20-2008 |
20080307403 | COMPILING APPARATUS - The present invention effectively utilizes auxiliary registers and provides a compiler system which secures error detectability when the auxiliary registers are shared for plural uses. The instruction definition resource configuring unit configures, as preparation for processing by the register assigning unit, respective resources such as a register to be defined or referred to by for each instruction in an intermediate code. The instruction definition resource configuring unit detects possibility of instructions each of which is to be decomposed into plural instructions. As for an instruction to be possibly decomposed, the instruction definition resource configuring unit configures a corresponding register in the intermediate code, assuming the corresponding register used for the decomposition to be defined and referred. The register assigning unit uses the register as a general register as far as a live range of the register used for the decomposition does not overlap. | 12-11-2008 |
20090019432 | Generating A Dynamic Content Creation Program - Provides methods and apparatus that can reduce the time required for processing, when generating a dynamic content using JSP or the like. An example device for generating a dynamic content creation program internally handles text by expressing the text in a predetermined general character encoding format. In the device, provided are: means for generating a dynamic content creation program, based on a predetermined file containing static text for constituting static part of a content; and means for preparing in advance content character encoding format-based character code information on the static text so that the program can utilize the information. | 01-15-2009 |
20090037892 | Low Impact Debugging Protocol - Methods and apparatus, including computer program products, are provided for debugging using dynamic compilers. The method may include receiving a first indication to grant access to a set of variables and to allow access to be inhibited to a set of remaining variables. The dynamic compiler may be allowed to optimize the set of remaining variables, while the set of granted variables is preserved. A second indication may be provided to acknowledge access to the set of granted variables and allow access to be inhibited to the set of remaining variables. In some variations, the set of granted variables is implemented as a set of live variables and the set of remaining variables is implemented as a set of dead variables. Related apparatus, systems, methods, and articles are also described. | 02-05-2009 |
20090064116 | Constructor Argument Optimization in Object Model for Folding Multiple Casts Expressions - A method and computer program product, for providing an optimization for a most derived object during compile time are provided. The optimization determines whether a most derived class object is present during a compile time. Also, the optimization utilizes the most derived class object to obtain a location of a virtual base for the most derived class object during the compile time, and provides the virtual base of the most derived class object during the compile time. The method is executed for a constructor and/or a destructor. The constructor or destructor contains arguments which require conversion to a base type, and the conversion is performed at compile-time instead of at runtime. | 03-05-2009 |
20090100416 | DYNAMIC NATIVE BINDING - A native binding technique is provided for insetting calls to native functions during translation of subject code to target code, such that function calls in the subject program to subject code functions are replaced in target code with calls to native equivalents of the same functions. Parameters of native function calls are transformed from target code representations to be consistent with native code representations, native code calling conventions, and native function prototypes. | 04-16-2009 |
20090235241 | FLEXIBLE INSTRUCTION PROCESSOR SYSTEMS AND METHODS - A design system for generating configuration information and associated executable code based on a customisation specification, which includes application information including application source code and customisation information including design constraints, for implementing an instruction processor using re-programmable hardware, the system comprises a template generator for generating a template for each processor style identified as a candidate for implementation; an analyser for analysing instruction information for each template and determining instruction optimisations; a compiler for compiling the application source code to include the instruction optimisations and generate executable code; an instantiator for analysing architecture information for each template, determining architecture optimisations and generating configuration information including the architecture optimisations; and a builder for generating device-specific configuration information from the configuration information including the architecture optimisations. In another aspect, a management system for managing run-time re-configuration of an instruction processor implemented using re-programmable hardware, comprises a configuration library containing configuration information for a plurality of instruction processor implementations; a code library for containing associated executable code for the implementations; a loader for loading application data and, as required, configuration information and associated executable code into re-programmable hardware for implementation and execution of an instruction processor; a loader controller for signalling the loader to load application data and, as required, configuration information and associated executable code, and execute the executable code; a run-time monitor for obtaining run-time statistics relating to operation of the instruction processor; an optimisation determiner configured to receive the run-time statistics, and being operable to instruct the loader to load new configuration information and associated executable code for a new implementation into the re-programmable hardware; and an optimisation instructor for invoking the optimisation determiner. | 09-17-2009 |
20100042983 | CROSS-ISA INLINING IN A SYSTEM VIRTUAL MACHINE - A system and method are provided for inlining a program call between processes executing under separate ISAs (Instruction Set Architectures) within a system virtual machine. The system virtual machine hosts any number of virtual operating system instances, each of which may execute any number of applications. The system virtual machine interprets or dynamically compiles not only application code executing under virtual operating systems, but also the virtual operating systems. For a program call that crosses ISA boundaries, the virtual machine assembles an intermediate representation (IR) graph that spans the boundary. Region nodes corresponding to code on both sides of the call are enhanced with information identifying the virtual ISA of the code. The IR is optimized and used to generate instructions in a native ISA (Instruction Set Architecture) of the virtual machine. Individual instructions are configured and executed (or emulated) to perform as they would within the virtual ISA. | 02-18-2010 |
20100070959 | DYNAMIC IMPROVED EXECUTABLES - A method of optimizing a performance of an executable program where the executable program including an executable code portion and a dynamic meta-data portion, the executable code portion and the dynamic meta-data portion being hard-linked together and the dynamic meta-data portion being configured to enhance an operation of the executable code portion. The method includes reading the meta-data. The executable code is then executed while the execution of the executable code is optimized based on the meta-data. Statistical data regarding an operation of the execution of the executable code is collected during the program's run. The dynamic meta-data is updated with the collected statistical data at an ending portion of the executable code. | 03-18-2010 |
20100138818 | Computer System and Method for Resolving Dependencies in a Computer System - A computer system and a method are disclosed for use in automatically deploying an application program to execute with one or more library resources. The computer system includes a deployment unit which deploys the application program into a runtime execution environment. When a predetermined trigger condition is detected, the deployment unit clones a first library resource to create a clone, transforms the application to depend upon the clone and resolves the dependencies of the application using the clone. In one embodiment, the trigger condition relates to a pinning situation, whereby a library upon which the application program depends cannot be wired to the application program to resolve the dependency. Here, the clone now satisfies that dependency. In another embodiment, the trigger condition is a mandatory cloning property that requires the library to be cloned. The mandatory cloning property may also be user-specified through a user interface. | 06-03-2010 |
20100205590 | AUTOMATING DYNAMIC PROGRAMS - Solving combinatorial optimisation problems using dynamic programming involves automating the integration of bounds propagation into compilation of a dynamic program. This is done by extracting bounds from partial results obtained during dynamic programming, and tightening the bounds throughout execution of the dynamic program. This dramatically reduces the number of “good” solutions that need to be constructed at each stage, improving speed and scalability of algorithms using such dynamic programming. | 08-12-2010 |
20100242030 | PROVIDING EXECUTION CONTEXT IN CONTINUATION BASED RUNTIMES - In an embodiment, a computer system instantiates a parent activity configured for execution in a continuation based runtime. The parent activity includes various child activities configured to perform pulses of work. The parent activity is also configured to add execution properties to an execution context. The computer system adds execution properties to the parent activity's execution context to generate a modified execution context which includes execution properties that extend the functionality of the parent and child activities. The added execution properties include corresponding identifiers that identify the added execution properties. The computer system also executes the parent activity including the various child activities within the modified execution context in the continuation based runtime. The modified execution context includes the added execution properties that are available to the parent and any child activities during execution, where at least one child activity implements functionality provided by the added execution properties. | 09-23-2010 |
20100269105 | METHOD OF DETERMINING WHICH COMPUTER PROGRAM FUNCTIONS ARE CHANGED BY AN ARBITRARY SOURCE CODE MODIFICATION - In a method of determining which computer program functions are changed by a source code modification to a computer program's source code, the improvement of including the following steps, not necessarily performed in the order indicated: | 10-21-2010 |
20110088022 | Dynamic Optimization Using A Resource Cost Registry - Technologies are generally described for runtime optimization adjusted dynamically according to changing costs of one or more system resources. Multicore systems may encounter dynamic variations in performance associated with the relative cost of related system resources. Furthermore, multicore systems can experience dramatic variations in resource availability and costs. A dynamic registry of system resource costs can be utilized to guide dynamic optimization. The relative scarcity of each resource can be updated dynamically within the registry of system resource costs. A runtime code generating loader and optimizer may be adapted to adjust optimization according to the resource cost registry. Information regarding system resource costs can support optimization tradeoffs based on resource cost functions. | 04-14-2011 |
20110113411 | PROGRAM OPTIMIZATION METHOD - A program optimization method according to the present invention includes a processing range decision step for deciding a part of a machine language program as a processing range to which a program optimization is applied based on a description included in a high-level language program, and an allocation decision step for deciding an allocation position of an instruction code in the processing range. The description specifies a correlative relation between a plurality of processing blocks of the high-level language program. In the processing range decision step, a program part equivalent to the processing blocks confirmed as having a correlative relation therebetween by a description of the machine language program is determined as the processing range. In the allocation decision step, the allocation position of the instruction code in the processing range is determined for each of the processing blocks based on the correlative relation specified by the description. | 05-12-2011 |
20110154308 | REDUNDANT RUN-TIME TYPE INFORMATION REMOVAL - Redundant run-time type information is removed from a compiled program. The redundant type information may be unneeded and/or duplicate. Unneeded type information is removed by selecting instances of type information from read only data sections of object files. The entire compiled program is searched for instructions that use the instances. The instances that do not correspond to such instructions are removed from the object files. Duplicate type information is removed by selecting instances of type information from read only data sections of object files. The read only data sections of the other object files in the compiled program are then searched for the selected instances. The selected instances that exist in the read only data sections of the other object files are removed. Redundant type information may be removed from individual object files before concatenation into a single binary file and/or from a single binary file after concatenation. | 06-23-2011 |
20110154309 | COMPILER WITH ENERGY CONSUMPTION PROFILING - An energy based framework is disclosed that allows a software compiler or developer to make decisions between performance and energy consumption. In one aspect, a first program code (e.g., vector engine based computation) may alternatively be compiled into a second program code (e.g., register operations). Using measurements obtained from a processor for which the first and second program codes are being compiled, and the expected size of the data and a number of iterations, a comparison can be made between the expected energy consumption profile of the first program code and the equivalent second program code. Based on the comparison, a software developer or the compiler can choose the program code that minimizes energy consumption. | 06-23-2011 |
20110214110 | Compiler Mechanism for Handling Conditional Statements - A computer-implemented method and apparatus for optimizing conditional code by identifying conditional code in a source code, adding a no-operation instruction to an executable code corresponding to the source code in place of the conditional code, adding an entry to a table to pair the no-operation instruction to the conditional code, compiling the conditional code, and storing the compiled conditional code separate from the executable code. A computer-implemented method and apparatus to optimize conditional code by loading an executable code to be executed, checking whether conditional code associated with the executable code is enabled for execution, looking up a location of a no-operation instruction in a table and a location of a compiled conditional code in the table, and replacing the no-operation instruction in the executable code with the compiled conditional code. | 09-01-2011 |
20110239202 | APPLICATION OF OPTIMIZATION TECHNIQUES TO INTERMEDIATE REPRESENTATIONS FOR CODE GENERATION - The present invention provides a method and system for optimization of an intermediate representation in a graphical modeling environment. A first intermediate representation is provided. At least one optimization technique is applied to the first intermediate representation. A second intermediate representation is generated responsive to the application of the at least one optimization technique to the first intermediate representation. | 09-29-2011 |
20110307876 | REGISTER MAPPING TECHNIQUES FOR EFFICIENT DYNAMIC BINARY TRANSLATION - Generally, the present disclosure provides a system and method for mapping registers from a system with more registers to a system with fewer registers. Regions may be formed that include one or more blocks of code with relatively frequent register accesses. The most frequently accessed source registers may be mapped to target registers. Each block in the region may be bounded by a prologue and at least one epilogue. The prologue may be configured to implement register mapping and the epilogue(s) may be configured to manage program flow from a block in the region to another block in the region or to a block not in the region. | 12-15-2011 |
20120030661 | OBSERVATION AND ANALYSIS BASED CODE OPTIMIZATION - Observation and analysis based optimization of software code is disclosed. An expected value is chosen for a dynamic attribute that cannot be determined, prior to execution of the associated software code, to be guaranteed to have that expected value at runtime. An optimized version of the software code is generated, including one or more optimizations based on an assumption that the dynamic attribute will have the expected value. Non-exhaustive examples of a dynamic attribute include a variable type; a location in memory; a location in which a global object, property, or variable is stored; the contents of a global function or method; and a value of a global property or variable. A check is performed during execution of the optimized version of the software code, prior to executing the portion that has been optimized based on the assumption, to verify that the dynamic attribute has the expected value. In the event that it is determined at runtime that the dynamic attribute does not have the expected value, execution reverts to backup code that is not based on the assumption that dynamic attribute will have the expected value. | 02-02-2012 |
20120174083 | DYNAMIC OPTIMIZATION FOR REMOVAL OF STRONG ATOMICITY BARRIERS - A method and apparatus for dynamic optimization of strong atomicity barriers is herein described. During runtime compilation, code including non-transactional memory accesses that are to conflict with transactional memory accesses is patched to insert transactional barriers at the conflicting non-transactional memory accesses to ensure isolation and strong atomicity. However, barriers are omitted or removed from non-transactional memory accesses that do not conflict with transactional memory accesses to reduce barrier execution overhead. | 07-05-2012 |
20120198428 | Using Aliasing Information for Dynamic Binary Optimization - A compiler compiles code in a target program for later execution with a dynamic binary optimizer by including aliasing information with the compiled code. When the program is subsequently executed, the dynamic binary optimizer accesses the aliasing information to determine whether certain optimizations can be safely performed. Preferably, the aliasing information includes a memory reference index assigning an index to each memory reference instruction and a may-alias bit matrix indicating, for each memory reference instruction, which other memory reference instructions might reference the same memory location. Aliasing information is preferably used by the optimizer during execution to safely re-order operations. | 08-02-2012 |
20120204164 | ADAPTIVE NEXT-EXECUTING-CYCLE TRACE SELECTION FOR TRACE-DRIVEN CODE OPTIMIZERS - An apparatus includes a processor for executing instructions at runtime and instructions for dynamically compiling the set of instructions executing at runtime. A memory device stores the instructions to be executed and the dynamic compiling instructions. A memory device serves as a trace buffer used to store traces during formation during the dynamic compiling. The dynamic compiling instructions includes a next-executing-cycle (N-E-C) trace selection process for forming traces for the instructions executing at runtime. The N-E-C trace selection process continues through an existing trace-head when forming traces without terminating a recording of a current trace if an existing trace-head is encountered. | 08-09-2012 |
20120204165 | Detecting Dangling Pointers And Memory Leaks Within Software - Dangling pointers and memory leak locations within software are detected. As the software allocates and deallocates memory, lists of pointers referencing the memory, and pointer status, are maintained. As the software writes new addresses within pointers and reads addresses referenced by the pointers, the pointer lists are maintained to determine whether the pointers are dangling and to detect memory leak locations. A balanced binary tree having a number of nodes can be maintained. The nodes represent heap or stack records. Each heap record corresponds to heap memory that has been allocated and has a list of pointers referencing the heap memory. Each stack record corresponds to a stack within which a stack frame is allocated each time a function is entered. The stack record has frame records corresponding to the stack frames. Each frame record has a list of pointers referencing the corresponding stack frame. | 08-09-2012 |
20120311551 | AUTOMATION OF POST-LINKER FUNCTIONS IN EMBEDDED APPLICATIONS - An embedded system post-linker optimization automation method can include connecting to a network file system, coordinating a first handshaking procedure to initiate an embedded application from the network file system, coordinating a second handshaking procedure to initiate a training phase of the embedded application and coordinating a third handshaking procedure to initiate generation of an optimized embedded application from the embedded application during an optimization phase. | 12-06-2012 |
20120331451 | SYSTEM AND METHOD FOR COMPILING MACHINE-EXECUTABLE CODE GENERATED FROM A SEQUENTIALLY ORDERED PLURALITY OF PROCESSOR INSTRUCTIONS - A method and system are provided for deriving a resultant software program from an originating software program having overlapping branches, wherein the resultant software project has either no overlapping branches or fewer overlapping branches than the originating software program. A preferred embodiment of the invented method generates a resultant software program that has no overlapping branches. The resultant software is more easily converted into programming reconfigurable logic than the originating software program. Separate and individually applicable aspects of the invented method are used to eliminate all four possible states of two overlapping branches, i.e., forward branch overlapping forward branch, back branch overlapping back branch, and each of the two possible and distinguishable states of forward branch and back branch overlap. One or more elements of each aspect of the invention may be performed by one or more computers or processors, or by means of a computer or a communications network. | 12-27-2012 |
20120331452 | OPTIMIZING PROGRAM BY REUSING EXECUTION RESULT OF SUBCLASS TEST FUNCTION - A technique for optimizing a program by reusing an execution result of a subclass test function. It includes a reusability determining unit to determine reusability of code of a subclass test function based on whether access to a global memory includes only access for reading out type information specified in a function call, a profiling unit configured to store an execution result of code determined to be reusable and specified information in a storage device in association with actually accessed type information, a reuse processing unit configured to reuse, in response to detection of a function call for calling the code determined to be reusable, the execution result on condition that the pieces of specified information specified in the function calls match, and a monitoring unit configured to monitor the type information associated with the execution result and prohibit reuse of the execution result if the type information is changed. | 12-27-2012 |
20130074058 | Memoization from Offline Analysis - Memoization may be deployed using a configuration file or database that identifies functions to memorize, and in some cases, includes input and result values for those functions. The configuration file or database may be created by profiling target code and offline or otherwise separate analysis of the profiling results. The configuration file may be used by an execution environment to identify which functions to memorize during execution. The offline or separate analysis of the profiling results may enable more sophisticated analysis than could otherwise be performed in parallel with executing the target code, including historical analysis of multiple instances of the target code and sophisticated cost/benefit analysis. | 03-21-2013 |
20130117736 | REACTIVE EXPRESSION GENERATION AND OPTIMIZATION - Reactive programming is facilitated. Reactive expressions can be generated automatically from non-reactive expressions or in other words standard expressions. Additionally or alternatively, reactive expressions can be optimized in a number of different ways to minimize computational work. | 05-09-2013 |
20130139134 | SERIALIZATION OF PRE-INITIALIZED OBJECTS - 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. | 05-30-2013 |
20130305230 | OPTIMIZATION APPARATUS, OPTIMIZATION METHOD AND OPTIMIZATION PROGRAM - An optimization apparatus includes an insertion unit inserting a method test for each of the virtual methods included in a code sequence, an acquisition unit acquiring one or more profiled run-time classes of a receiver object used for calling each of the virtual methods at execution of the code sequence into which the method tests have been inserted, and an optimization unit inserting, in place of the inserted method test, a class test that sets a recording-time class and the run-time class of a corresponding receiver object as classes to be permitted on condition that the run-time class of the corresponding receiver object has successfully called all virtual methods requesting the method test for the receiver object. | 11-14-2013 |
20130311981 | METHOD, PROGRAM, AND SYSTEM FOR CODE OPTIMIZATION - Method, program and system for code optimization. The method includes detecting a sign assignment instruction having an input operand and an output operand identical in size to each other. Analyzing and determining whether a value of the input operand results from an add or subtract operation and if the value is greater than the value prior to the operation. If so then removing the sign assignment instruction on the condition that the input operand and the output operand of the sign assignment instruction have their addresses identical to each other and replacing the sign assignment instruction with a copy instruction for copying the value of the input operand of the sign assignment instruction to a value of the output operand on the condition that the addresses of the input operand and the output operand of the sign assignment instruction are not identical and do not overlap each other. | 11-21-2013 |
20130339935 | Adjusting Programs Online and On-Premise Execution - The subject disclosure is directed towards a technology by which a program configured as a set of components has its components executed on different nodes of a distributed computer system. A selected node for executing a component is determined by an execution fabric decision mechanism based upon current resource state/capabilities and metadata associated with the component that specifies desired resource-related capabilities for the component. The execution of the component may be moved to a different node to meet the desired resource-related capabilities. | 12-19-2013 |
20130339936 | Optimized Execution of Dynamic Languages - Program code in a dynamic language is executed through a dynamic execution module that includes an execution context and an execution codebase. The instructions of the program code are translated into machine code that is stored in the execution codebase, and the execution context tracks the runtime state and persistent state of the program through executions and across executions. Using the execution codebase and the execution context the dynamic execution module minimizes duplicative machine code generation, while preserving the dynamic aspects of the program. | 12-19-2013 |
20140047423 | Runtime State Based Code Re-Optimization - A method and an apparatus to execute a code compiled from a source code to access an untyped variable are described. An optimized access code may be compiled in the code with speculative optimization via a type prediction of runtime value of the untyped variable. Invalidity of the type prediction may be dynamically detected for future runtime values of the untyped variable. The code may be updated with an access code compiled for the access without the speculative optimization based on the invalidity detection. The updated code can be executed for the access to the untyped variable without executing the optimized access code. | 02-13-2014 |
20140089909 | DYNAMICALLY BUILDING LOCALE OBJECTS AT RUN-TIME - Locale objects are dynamically built from locale source files when requested at run-time. When a locale object is dynamically built, it is stored in global memory so it may be read by multiple applications. Dynamically building locale objects when requested allows software to operate with a relatively small number of locale objects instead of with hundreds or thousands of locale objects, as is known in the art. The result is significant savings in system-wide resources while still allowing for access to a large number of possible locales. | 03-27-2014 |
20140165048 | SYSTEMS AND METHODS FOR UNIQUELY DEFINING FORTRAN RUN TYPE DESCRIPTORS FOR POLYMORPHIC ENTITIES - Systems and methods disclosed herein uniquely define each type of Fortran type descriptor within an executable file or shared library to allow for a rapid determination of how the dynamic type of one object (e.g., a first polymorphic entity) relates to that of another object (e.g., a second polymorphic entity) while allowing for the lazy loading of shared libraries. In one aspect, type descriptor definitions are instantiated (e.g., during compile-time) in each of a number of object files in which polymorphic entities are defined, each type descriptor definition is marked with a singleton attribute, and each group of common type descriptor definitions is associated with a COMDAT group to ensure that only a single copy of each type descriptor is defined in a corresponding executable file at a particular address in memory to which polymorphic entities can reference. Type descriptor addresses can be compared to determine dynamic type relations between two or more polymorphic entities. | 06-12-2014 |
20140282452 | SYSTEM AND METHOD FOR REDUCING THE STATIC FOOTPRINT OF MIXED-LANGUAGE JAVA.TM. CLASSES - A system and a method for minimizing the functionality-gap between JAVA™ and native platforms while keeping the impact on each JAVA™ API static footprint as small as possible. A JAVA™ Runtime Dynamic Invocation API is used for low-level bridging between JAVA™ and C/C++, enabling the dynamic invocation of native C/C++ functions and C++ class/object methods from the JAVA™ side without adding any additional ad hoc implemented native code to the overall JAVA™ component implementation. Thereby, the need to write new native code when implementing a JAVA™ component that needs to invoke some native functionality is reduced. | 09-18-2014 |
20140298306 | SOFTWARE PIPELINING AT RUNTIME - Apparatuses and methods may provide for determining a level of performance for processing one or more loops by a dynamic compiler and executing code optimizations to generate a pipelined schedule for the one or more loops that achieves the determined level of performance within a prescribed time period. In one example, a dependence graph may be established for the one or more loops, and each dependence graph may be partitioned into stages based on the level of performance. | 10-02-2014 |
20150026671 | MECHANISM FOR FACILITATING DYNAMIC AND EFFICIENT FUSION OF COMPUTING INSTRUCTIONS IN SOFTWARE PROGRAMS - A mechanism is described for facilitating dynamic and efficient fusion of computing instructions according to one embodiment. A method of embodiments, as described herein, includes monitoring a software program for a program region having fusion candidate instructions for a fusion operation at a computing system; evaluating whether the macro operation of the candidate instructions is valuable to the software program; and performing the fusion operation if it is evaluated to be valuable. | 01-22-2015 |
20150040111 | HANDLING PRECOMPILED BINARIES IN A HARDWARE ACCELERATED SOFTWARE TRANSACTIONAL MEMORY SYSTEM - A method and apparatus for enabling a Software Transactional Memory (STM) with precompiled binaries is herein described. Upon encountering an access operation in a transaction, an annotation field associated with a memory location referenced by the access is checked. In response to the memory location representing a previous similar access within the transaction, the access is performed without access barriers. However, if the annotation field is in a default state representing no previous access during a pendancy of the transaction, then a mode of the processor is determined. If the processor mode is in implicit mode, an access handler/barrier is asynchronously executed. Conversely, in an explicit mode, a flag is set instead of asynchronously executing the handler. In addition, during compilation convert explicit and convert implicit instructions are inserted to intelligently convert modes for precompiled and newly compiled binaries. Furthermore, new versions of newly compiled functions may be inserted to provide strong atomicity between previously and newly compiled functions. | 02-05-2015 |
20150106797 | DYNAMIC CODE SELECTION BASED ON DATA POLICIES - In a method for dynamically replacing code within a software application on a device, an annotated code segment that performs a function according to a first data policy is received. The computer determines an alternate segment that performs the function according to a second data policy. | 04-16-2015 |
20150331682 | DATA SPLITTING FOR RECURSIVE DATA STRUCTURES - Embodiments of the present invention provide a method, system and computer program product for the data splitting of recursive data structures. In one embodiment of the invention, a method for data splitting recursive data structures can be provided. The method can include identifying data objects of a recursive data structure type, such as a linked list, within source code, the recursive data structure type defining multiple different data fields. The method further can include grouping the data objects into some memory pool units, each of which can contain the same number of data objects. Each memory pool unit can be seen as an array of data objects. The method can include data splitting, which could be maximal array splitting in each different memory pool unit. Finally, the method can include three different approaches, including field padding, field padding and field splitting, to handle irregular field sizes in the data structure. | 11-19-2015 |
20150339108 | Compiler Based Obfuscation - Compiler based obfuscation is described. To protect portions of a code project with obfuscations, the code is modified within a compiler to produce one or more modifications that obfuscate the code as part of a compilation process. A compiled version of the code is generated having the modifications that are produced within the compiler. In one approach, the compiler is configured to consume an obfuscation description that indicates portions of the code to protect and specifies the modifications to make to the indicated portions. Various different modifications of code may be performed during the compilation process to implement corresponding obfuscation features. For example, the modifications made within a compiler may include, but are not limited to, modifications designed to enable tamper detection, anti-debugging, and/or encryption of the code. | 11-26-2015 |
20150347103 | MULTIPHASED PROFILE GUIDED OPTIMIZATION - Multiphased profile guided optimization optimizes executable code based on data collected during multiple training runs of a training executable. In multiphased profile guided optimization, multiple sets of profiling data are collected where each set of profiling data is associated with a program phase and a particular training run. Program phases include but are not limited to different program features, startup, steady state and shutdown. The program features can run concurrently. Priority of the phases can be specified. | 12-03-2015 |
20160004519 | SYSTEM FOR DYNAMIC COMPILATION OF AT LEAST ONE INSTRUCTION FLOW - A compilation system for at least one instruction flow to be executed on a target circuit comprises a hardware acceleration circuit performing the functions of loading a set of at least one portion of said flow to a memory internal to the circuit and of decoding the set; the instructions resulting from the loading and from the decoding being transmitted to a programmable core operating in parallel to the hardware acceleration circuit, the programmable core producing the transcription of the decoded instructions into a machine code suitable for execution on the target circuit. | 01-07-2016 |
20160019035 | OPTIMIZED EXECUTION OF DYNAMIC LANGUAGES - in one aspect, a method for optimizing execution of dynamic language code is provided, the method includes identifying a first dynamic language function call during runtime, the function call including argument values for one or more arguments of the function, calculating a type signature for the one or more argument values of the function, determining if a function associated with the type signature is stored in a cache, looking up the function in the cache when the function associated with the type signature is stored in the cache and dynamically calling the function associated with the type signature when the specialized function for the type signature is not stored in the cache. | 01-21-2016 |
20160085528 | AUTOMATED ADAPTIVE COMPILER OPTIMIZATION - Embodiments of the invention provide systems and methods for automatically and adaptively optimizing compilation of application code using a rule-based optimization analyzer (RUBOA) that can command a compiler to apply and adapt optimizations at the code segment level according to gathered performance data. For example, source code can be canonically compiled, and annotations can associate compiled code sections with source code sections. The generated binary can then be executed and monitored to gather performance characteristics. The RUBOA can apply the gathered performance characteristics and annotations to a pre-defined rule set to generate compiler optimizations, each associated with and parametrically tailored to respective source code segments. The RUBOA can automatically generate optimization control data from the generated compiler optimizations, and the source application code can be re-compiled according to the set of optimization control data to generate executable code that is adaptively optimized at the code segment level. | 03-24-2016 |
20160085531 | METHODS AND APPARATUS TO VALIDATE TRANSLATED GUEST CODE IN A DYNAMIC BINARY TRANSLATOR - Methods, apparatus, systems and articles of manufacture are disclosed to validate translated guest code in a dynamic binary translator. An example apparatus disclosed herein includes a translator to generate a first translation of code to execute on a host machine, the first translation of the guest code to facilitate creating a first translated guest code, and the translator to generate a second translation of the translated guest code to execute on the host machine. The example apparatus also includes a translation versions manager to identify a first host machine state based on executing a portion of the first translation, and the translation versions manager to identify a second host machine state based on executing a portion of the second translation. The example system also includes a validator to determine a state divergence status of the second translation based on a comparison between the first host machine state and the second host machine state. | 03-24-2016 |
20160103666 | PERFORMANCE IMPROVEMENT METHOD IN INSTANCE HOSTING ENVIRONMENT AND SERVICE SYSTEM THEREFOR - A service system in an IoT environment is provided. The service system includes an instance manager configured to manage generation and operation of an instance for a virtual object corresponding to an IoT device. The instance manager includes an instance pool configured to pool the instance, a message router configured to filter a data stream according to the instance and to transmit the filtered result value together with the data stream, and an instance lifecycle manager configured to reuse the instance pooled in the instance pool according to the filtered result value or to skip calling of an instance according to the data stream. | 04-14-2016 |
20160110172 | BROADENING FIELD SPECIALIZATION - Three extensions to the conventional field specialization process are disclosed. The first extension is cross-application value flows, where a value transfers out of one application and subsequently into another application. The second extension is an inter-application analysis. Static and dynamic analysis is performed by a Spiff Toolset not just on the source code of a single application, but also across the data read and written by that application. The third extension is invariant cross-application termination, verifying the possibility of an invariant originating in an application and terminating in a specialization opportunity in a separate application. An ecosystem specification is disclosed to enable such field specialization broadening. This specification states which applications are involved, what input data sources are read, what intermediate and final data products are produced, and what services are invoked, thereby providing valuable information on how intermediate results are communicated among the various applications. | 04-21-2016 |
20160124729 | DYNAMIC COLLECTION ATTRIBUTE-BASED COMPUTER PROGRAMMING LANGUAGE METHODS - Simplified handling of dynamic collections having a variable number of elements at run time is achieved by providing for specification of collective properties of dynamic collections by a programmer. Such collective properties are distinct from type-member properties of the collection that follow from the types and type qualifiers of its members. Preferably, such dynamic collections are attributes (i.e., members) of an application defined type. | 05-05-2016 |
20160147512 | VARIABLE INFERENCE SYSTEM AND METHOD FOR SOFTWARE PROGRAM - A variable inference system and a variable inference method for a software program are provided. The variable inference system and method calculate a first variable type output corresponding to an unknown variable for a plurality of first basic blocks of a software program. The variable inference system and method calculate a second variable type input corresponding to the unknown variable for a second basic block of the software program. The variable inference system and method calculate a second variable type generation when the second basic block includes a primitive instruction corresponding to the unknown variable. The variable inference system and method calculate a second variable type kill. The variable inference system and method calculate a second variable output corresponding to the unknown variable for the second basic block according to the second variable type input, the second variable type generation and the second variable type kill. | 05-26-2016 |
20160147513 | SUPPORTING DYNAMIC BEHAVIOR IN STATICALLY COMPILED PROGRAMS - Support for dynamic behavior is provided during static compilation while reducing reliance on JIT compilation and large runtimes. A mapping is created between metadata and native code runtime artifacts, such as between type definition metadata and a runtime type description, or between method definition metadata, a runtime type description, and a native code method location, or field definition metadata, a runtime type description, and a field location. A mapping between runtime artifacts may also be created. Some compilation results include trampoline code to support a reflection invocation of an artifact in the reduced runtime support environment, for virtual method calls, call-time bounds checking, calling convention conversion, or compiler-intrinsic methods. Some results support runtime diagnostics by including certain metadata even when full dynamic behavior is not supported. | 05-26-2016 |
20160179489 | OPTIMIZED EXECUTION OF DYNAMIC LANGUAGES | 06-23-2016 |
20170235555 | SYSTEM AND METHOD FOR DYNAMIC RUNTIME MERGING OF REAL TIME STREAMING OPERATOR ENVIRONMENTS | 08-17-2017 |
20170235557 | TRANSLATING ATOMIC READ-MODIFY-WRITE ACCESSES | 08-17-2017 |