Entries |
Document | Title | Date |
20080209407 | PROCESSOR AND COMPILER FOR DECODING AN INSTRUCTION AND EXECUTING THE INSTRUCTION WITH CONDITIONAL EXECUTION FLAGS - The present invention provides a processor which has a small-scale circuit and is capable of executing loop processing at a high speed while consuming a small amount of power. When the processor decodes an instruction “jloop C | 08-28-2008 |
20080216063 | COMPILER FOR JAVA AND .NET - A computer implemented method analyzing a first code in a first managed computer language and generating intermediate code in a completed language. The intermediate code into linking code that allows the second code in a second managed runtime language to interact with the first code. | 09-04-2008 |
20080244543 | PAIRING OF SPILLS FOR PARALLEL REGISTERS - A system can include an analyzer module configured to analyze spill code generated by a register allocator to determine that register spill instructions can be paired, wherein paired register spill instructions relate to corresponding register locations in each of a first register set and a second register set and that no instructions between said register spill instructions modify any of said register spill instructions; a rewriter module configured to, based on the determining, modify said register spill instructions as a parallel register spill instruction; and a storage module configured to configure storage of associated register spills in memory so said register spills can be loaded back in parallel into corresponding registers of said first and second register sets based on said modified parallel register spill instruction, wherein the configuration of storage includes allocation of space on a memory stack such that the register spills are double word aligned. | 10-02-2008 |
20080263529 | Method and apparatus for dynamic code optimization - A method and an apparatus that optimally compile a source code for a data transformation operation in response to a request from a run-time application are described. A current state of the run-time application is included in the request. The application executes a non-optimized library routine for the data transformation operation while a separate worker thread performs optimized code compilation on the source code for the data transformation operation based on the request at the same time. The request includes a current state of the run-time application. The non-optimized library routine has been pre-built during build time. | 10-23-2008 |
20080320457 | Intermediate Code Metrics - Metrics may be determined from intermediate computer code by reading and analyzing an entire application using intermediate code, including any linked portions. The metrics may include cyclomatic complexity, estimated or actual number of lines of code, depth of inheritance, type coupling, and other metrics. The metrics may be combined into a quantifiable metric for the code. | 12-25-2008 |
20090007084 | MODEL DRIVEN DEVELOPMENT INCLUDING ASPECT INTEGRATION TOOL - The present invention discloses a software development tool that includes a model development interface, an aspect design tool, and a model transformation engine. The model development interface can permit a developer to graphically design at least one software model. The aspect design tool for the model development interface can be configured to permit a user to specify at least one aspect to be applied to a model of the model development interface. The model transformation engine can transform a model of the model development interface having at least one aspect defined via the aspect design tool into automatically generated aspect code integrated with base language code. | 01-01-2009 |
20090007085 | ARCHITECTURE FOR GENERATING INTERMEDIATE REPRESENTATIONS FOR PROGRAM CODE CONVERSION - An improved architecture for a program code conversion apparatus and method for generating intermediate representations for program code conversion. The program code conversion apparatus determines which types of IR nodes to generate in an intermediate representation (IR) of subject code ( | 01-01-2009 |
20090083722 | System and Method for Stable Transitions in the Presence of Conditionals for an Advanced Dual-Representation Polyhedral Loop Transformation Framework - A system and method for stable transitions in the presence of conditionals for an advanced dual-representation polyhedral loop transformation framework are provided. The mechanisms of the illustrative embodiments address the weaknesses of the known polyhedral loop transformation based approaches by providing mechanisms for performing code generation transformations on individual statement instances in an intermediate representation generated by the polyhedral loop transformation optimization of the source code. These code generation transformations have the important property that they do not change program order of the statements in the intermediate representation. This property allows the result of the code generation transformations to be provided back to the polyhedral loop transformation mechanisms in a program statement view, via a new re-entrance path of the illustrative embodiments, for additional optimization. In addition, mechanisms are provided for ensuring code stabilization in the presence of conditions such that code bloat is not encountered during re-entrance. | 03-26-2009 |
20090113403 | Replacing no operations with auxiliary code - A machine code computer program may comprise machine code directed to a main task and may contain no operations (NOPs). Some or all of the NOPs may be replaced with auxiliary code. Alternatively, the machine code computer program may be generated with auxiliary code where the NOPs would otherwise be. In some implementations, additional auxiliary code may also be provided in the machine code computer program. The auxiliary code and additional auxiliary code may comprise instructions that provide additional information about the machine code computer program in which they reside and its execution, but otherwise may act as NOPs with regard to the functionality of the machine code computer program. | 04-30-2009 |
20090144709 | REDUCING STACK SPACE CONSUMPTION VIA HEAD-CALL OPTIMIZATION - Embodiments of the invention provide a method for reducing stack space consumption via a head-call optimization. When compiling the source code of a computer application, a compiler application may be configured to analyze program flow to identify a “head-call” within any functions included in the program source code. Once identified, the “head-call” may be removed during program compilation. Doing so may reduce the number of elements pushed onto a program's stack space during program execution. | 06-04-2009 |
20090172651 | CREATING AND USING DELTAS TO MODIFY EXISTING COMPUTER CODE - Aspects of the subject matter described herein relate to creating and using deltas to modify existing computer code. In aspects, computer code may be translated into a higher level language to make it easier for a software developer to modify the computer code. The translated computer code may be presented by an editing tool that presents a user interface that allows changes to be made to the translated computer code. A delta engine may then determine a delta that indicates the changes to perform on the existing computer code to create computer code that would result from compiling the translated computer code as changed via the editing tool. Later, this delta may be used to change the existing computer code after it has been loaded to add or change debugging hooks or other features of the computer code. | 07-02-2009 |
20090222800 | Method and apparatus for implementing a bi-endian capable compiler - A method of compiling code includes assigning an endian type to data. An endian flip operation is performed based on the endian type of the data and a target system. Other embodiments are described and claimed. | 09-03-2009 |
20090222801 | DECLARATIVE PINNING - A system and method is provided for efficiently pinning references to the managed heap. The system and method allow for references to managed objects to be declared as pinned during a call to unmanaged code. The references are then reported as pinned to a garbage collector in response to invocation of a garbage collection service. The reference can be declared as pinned by a programmer within the source code or automatically invoked at run-time based on an unsafe condition. The garbage collection service will not move or relocate objects that are referenced by the active pinned local variables. If a garbage collection does not occur, the fact that the local variables are declared pinned is ignored. | 09-03-2009 |
20090254892 | Compiling method and compiler - A compiling method for compiling software which is adapted to output an intermediate result at a given timing, the compiling method includes extracting, by a computer, a process block related to parallel processing and conditional branch from a processing sequence included in a source code of a software which is processed time-sequentially, and generating, by the computer, an execution code by restructuring the process block that is extracted. | 10-08-2009 |
20090320003 | Sharing Compiler Optimizations in a Multi-Node System - Embodiments of the invention enable application programs running across multiple compute nodes of a highly-parallel system to compile source code into native instructions, and subsequently share the optimizations used to compile the source code with other nodes. For example, determining what optimizations to use may consume significant processing power and memory on a node. In cases where multiple nodes exhibit similar characteristics, it is possible that these nodes may use the same set of optimizations when compiling similar pieces of code. Therefore, when one node compiles source code into native instructions, it may share the optimizations used with other similar nodes, thereby removing the burden for the other nodes to figure out which optimizations to use. Thus, while one node may suffer a performance hit for determining the necessary optimizations, other nodes may be saved from this burden by simply using the optimizations provided to them. | 12-24-2009 |
20090328017 | RAPID APPLICATION DEVELOPMENT - A system to enables Rapid Application Development (“RAD”) is provided. The system provides an object model of an ERP application, which enables software developers to customize the ERP applications. The object model provides a base class that is inherited by each object class. The base class provides an invoke function that is implemented by each object class. During compilation, the RAD system compiles each invocation of a function of an object into a call to a dynamic component passing an identifier of the object, an identifier of the function to be invoked, and the parameters to be passed to the function. The RAD system dynamically compiles, assembles, and instantiates object classes as needed. Because objects are bound at runtime, rather than at compile time, when the source code of an object is modified, the entire ERP application does not need to be recompiled into monolithic IL code and the compilation of object classes is deferred until an object of that class is needed during runtime. The object model thus significantly decreases the time required to customize and extend an ERP application according to the needs of an individual customer. | 12-31-2009 |
20100042980 | CROSS-DOMAIN INLINING IN A SYSTEM VIRTUAL MACHINE - A system and method are provided for inlining across protection domain boundaries with a system virtual machine. A protection domain comprises a unique combination of a privilege level and a memory address space. The system virtual machine interprets or dynamically compiles not only application code executing under guest operating systems, but also the guest operating systems. For a program call that crosses a protection domain boundary, 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 applicable protection domains. The IR is optimized and used to generate instructions in a native ISA (Instruction Set Architecture) of the virtual machine. Individual instructions reveal the protection domain in which they are to operate, and instructions corresponding to different domains may be interleaved. | 02-18-2010 |
20100042981 | Software application performance enhancement - Generating parallelized executable code from input code includes statically analyzing the input code to determine aspects of data flow and control flow of the input code; dynamically analyzing the input code to determine additional aspects of data flow and control flow of the input code; generating an intermediate representation of the input code based at least in part on the aspects of data flow and control flow of the input code identified by the static analysis and the additional aspects of data and control flow of the input code identified by the dynamic analysis; and processing the intermediate representation to determine portions of the intermediate representation that are eligible for parallel execution; and generating parallelized executable code from the processed intermediate representation | 02-18-2010 |
20100131936 | Efficient automated translation of procedures in an constraint-based programming language implemented with notification and callback - A method is provided for translating sets of constraint declarations to imperative code sequences based on defining an instantiatable object per set, inserting calls to a notification callback mechanism on state modification and defining calls in the constraint context as imperative code sequences that, in response to these callbacks, take actions to maintain these constraints. This notification and callback mechanism can also be employed in connection with external events, thereby providing for efficient implementation of event-sequenced imperative procedures in a constraint programming language. | 05-27-2010 |
20100153934 | Prefetch for systems with heterogeneous architectures - A compiler for a heterogeneous system that includes both one or more primary processors and one or more parallel co-processors is presented. For at least one embodiment, the primary processors(s) include a CPU and the parallel co-processor(s) include a GPU. Source code for the heterogeneous system may include code to be performed on the CPU but also code segments, referred to as “foreign macro-instructions”, that are to be performed on the GPU. An optimizing compiler for the heterogeneous system comprehends the architecture of both processors, and generates an optimized fat binary that includes machine code instructions for both the primary processor(s) and the co-processor(s). The optimizing compiler compiles the foreign macro-instructions as if they were predefined functions of the CPU, rather than as remote procedure calls. The binary is the result of compiler optimization techniques, and includes prefetch instructions to load code and/or data into the GPU memory concurrently with execution of other instructions on the CPU. Other embodiments are described and claimed. | 06-17-2010 |
20100153935 | Delayed insertion of safepoint-related code - Delayed insertion of safepoint related code is disclosed. Optimization processing is performed with respect to an intermediate representation of a source code. The optimized intermediate representation is analyzed programmatically to identify a safepoint and insert safepoint related code associated with the safepoint. In some embodiments, analyzing the optimized intermediate representation programmatically comprises determining where to place the safepoint within a program structure of the source code as reflected in the intermediate representation. | 06-17-2010 |
20100153936 | Deferred constant pool generation - Deferred constant pool generation is disclosed. Optimization processing is performed with respect to an intermediate representation of a source code. The optimized intermediate representation is used to generate a constant pool. In some embodiments, the source code comprises JavaScript, which is used to generate an LLVM or other intermediate representation (IR), which intermediate representation is optimized prior to a constant pool being generated. | 06-17-2010 |
20100199269 | PROGRAM OPTIMIZATION DEVICE AND PROGRAM OPTIMIZATION METHOD - A program optimization device which, when optimizing a program, performs optimization depending on characteristics of data to be processed by the program without having to execute the program before the optimization, includes: an intermediate code conversion unit that converts an input program to be optimized, into an intermediate code; a variable value setting unit that sets a possible value of a variable according to externally provided information; a node value calculation unit that calculates a possible value of a node included in the intermediate code according to the value set by the variable value setting unit; an intermediate code optimization unit that optimizes the intermediate code according to the value calculated by the node value calculation unit; and an output program conversion unit that converts the intermediate code optimized by the intermediate code optimization unit, to an output program. | 08-05-2010 |
20100211940 | Post-pass binary adaptation for software-based speculative precomputation - The latencies associated with cache misses or other long-latency instructions in a main thread are decreased through the use of a simultaneous helper thread. The helper thread is a speculative prefetch thread to perform a memory prefetch for the main thread. The instructions for the helper thread are dynamically incorporated into the main thread binary during post-pass operation of a compiler. | 08-19-2010 |
20100251226 | COMPILE METHOD, COMPUTER PROGRAM PRODUCT, AND SEMICONDUCTOR-INTEGRATED-CIRCUIT MANUFACTURING METHOD - A first execution program for outputting coverage data during execution is output by compiling a first source code. Coverage data is output by executing the output first execution program. A code block not executed at all included in the first source code is commented out or deleted according to the output coverage data to generate a second source code. A second execution program is output by compiling the generated second source code. | 09-30-2010 |
20100269103 | Method and device for multi-core instruction-set simulation - The present invention discloses a method for multi-core instruction-set simulation. The proposed method identifies the shared data segment and the dependency relationship between the different cores and thus effectively reduces the number of sync points and lowers the synchronization overhead, allowing multi-core instruction-set simulation to be performed more rapidly while ensuring that the simulation results are accurate. In addition, the present invention also discloses a device for multi-core instruction-set simulation. | 10-21-2010 |
20100275189 | Method, Apparatus and Computer Program Product for Automatically Generating a Computer Program Using Consume, Simplify & Produce Semantics with Normalize, Transpose & Distribute Operations - A code generator and multi-core framework are executable in a computer system to implement methods as disclosed herein, including a method for the code generator to automatically generate multi-threaded source code from functional specifications, and for the multi-core framework, which is a run time component, to generate multi-threaded task object code from the multi-threaded source code and to execute the multi-threaded task object code on respective processor cores. The methods provide transparency to the programmer, and during execution, provide automatic identification of processing parallelisms. The methods implement Consume-Simplify-Produce and Normalize-Transpose-Distribute operations to reduce complex expression sets in a functional specification to simplified expression sets operable in parallel processing environments through the generated multi-threaded task object code. The result is a code generator which compiles transparent declarative code into multi-threaded code and that in the process identifies and assigns parallel processing paths to improve overall processing performance. | 10-28-2010 |
20100293534 | USE OF VECTORIZATION INSTRUCTION SETS - In one embodiment, the invention is a method and apparatus for use of vectorization instruction sets. One embodiment of a method for generating vector instructions includes receiving source code written in a high-level programming language, wherein the source code includes at least one high-level instruction that performs multiple operations on a plurality of vector operands, and compiling the high-level instruction(s) into one or more low-level instructions, wherein the low-level instructions are in an instruction set of a specific computer architecture. | 11-18-2010 |
20110072419 | MAY-CONSTANT PROPAGATION - May-constant propagation is a technique used to propagate a constant through the call graph and control flow graph by ignoring possible kills and re-definitions with low probability. Variables associated with constants in program code are determined. Execution flow probabilities are executed for code segments of the program code that comprise the variables. The execution flow probabilities are calculated based on flow data for the program code. At least a first of the code segments is determined to have a high execution flow probability. The first of the constants associated with the first variable are propagated through the flow data to generate modified flow data. | 03-24-2011 |
20110154307 | Method and System For Utilizing Data Flow Graphs to Compile Shaders - A method and system are provided in which one or more processors may be operable to generate an intermediate representation of a shader source code, wherein the intermediate representation comprises one or more whole-program data flow graph representations of the shader source code. The one or more processors may be operable to generate machine code based on the generated intermediate representation of the shader source code. The one or more whole-program data flow graph representations of the shader source code may be generated utilizing a compiler front end. The machine code may be generated utilizing a compiler back end. The generated machine code may be executable by a graphics processor. The generated machine code may be executable by a processor comprising a single-instruction multiple-data (SIMD) architecture. The generated machine code may be executable to perform coordinate and/or vertex shading of image primitives. | 06-23-2011 |
20110173595 | LANGUAGE-BASED MODEL FOR ASYNCHRONOUS OPERATIONS - The compilation of user code. Upon accessing the user code, the compiler determines that the user code includes at least one top-level asynchronous operation that is 1) to operate at a top-level of the stack of the programmed code, 2) that is programmed using a syntax for synchronous operations and 3) includes at least one indicator that the operation is to be asynchronous. The user code is then compiled such that the top-level asynchronous operation programmed in the syntax for synchronous operations is transformed into an asynchronous pattern suitable for the runtime environment. | 07-14-2011 |
20110173596 | METHOD FOR FACILITATING COMPILATION OF HIGH-LEVEL CODE FOR VARYING ARCHITECTURES - The invention relates to a method for compiling high-level language code for various architectures and/or components. The invention proposes that an architecture-specific precompilation be generated and subsequently the architecture-specific precompilation be compiled taking into account component-specific information. | 07-14-2011 |
20110185345 | Type-Preserving Compiler for Security Verification - Described is a source program code language that facilitates the association of security proofs obtained from a solver (e.g., a Z3 theorem prover) with the program code. The code may include affine types, dependent types and/or refinement types. A derefinement procedure replaces each refinement type with a dependent pair type corresponding to the proof. A target code type checker verifies the target code with respect to the security policies. If verified as complying with security policy, a verified program corresponding to the translated program may then be installed and run. | 07-28-2011 |
20110252410 | PROGRAM CONVERTING APPARATUS AND PROGRAM CONVERSION METHOD - A compiler, which corresponds to a recent processor having a multithread function, that enables execution of efficient instruction scheduling and allows a programmer to control the instruction scheduling includes: an instruction scheduling directive receiving unit which receives, from a programmer, a directive for specifying an instruction scheduling method; and an instruction scheduling unit which executes, conforming to one of instruction scheduling methods, instruction scheduling of rearranging intermediate codes corresponding to the source program. The instruction scheduling unit selects one of instruction scheduling methods according to the directive received by the instruction scheduling directive receiving unit, and executes instruction scheduling conforming to the selected instruction scheduling method. | 10-13-2011 |
20110258615 | INTERMEDIATE LANGUAGE SUPPORT FOR CHANGE RESILIENCE - Management of changes involving base classes is facilitated. An intermediate language code has execution-ready register allocation but unbound object field layout and/or virtual method slot assignment, thereby providing resilience. A symbolic reference rather than a direct offset can identify a field, and intermediate language code can be field order independent. Other symbolic references may also be used. Intermediate language code pseudo instructions can express items such as a field access, a method call, a virtual method call, part or all of a method prolog, part or all of a method epilog. A binder binds the intermediate language code to produce executable code. Thus, one may avoid recompilation otherwise required when a base class is revised by adding a field, removing a private field, rearranging field order, adding a virtual method, or rearranging virtual method order. | 10-20-2011 |
20110258616 | INTERMEDIATE LANGUAGE SUPPORT FOR CHANGE RESILIENCE - In a change-resilient intermediate language code, registers have been allocated but symbolic references and pseudo instructions still use unbound items. Pseudo instructions having a specific location within generated intermediate language code request insertion of machine instruction(s) at the location to perform specified operations. Specified operations may include, for example, operations to perform or facilitate garbage collection, memory allocation, exception handling, various kinds of method calls and execution engine service calls, managed object field access, heap management, generic code, static variable storage access, address mode modification, and/or symbolic reference to types. A binder may transform the intermediate language code into executable code. Little or no register allocation is needed during binding, but unbound items such as offsets, sizes, slots, and the like are determined and specified to produce executable code. | 10-20-2011 |
20110271261 | MODIFIABLE HIGH-LEVEL INTERMEDIATE REPRESENTATION OF SOURCE CODE - A computer-implemented method includes compiling one or more segments of code during run-time of a process executing at one or more processors of a computer system. The compilation produces a high-level intermediate representation of the one or more segments of the code. The high-level intermediate representation is modifiable by the process, without executing the high-level intermediate representation, to generate a modified high-level intermediate representation that is executable by the process. | 11-03-2011 |
20110302564 | Library Conformity Checker - A library management system may compare contracts between programming libraries to identify unions, intersections, and differences between libraries. The management system may have a contract analyzer that may remove the contract definition from an existing library to form a library contract. The library contract may be managed as a first class item within a programming environment, and may be used as a reference for comparing existing and new versions of the library. The library management system may create reference libraries for programmers to write applications using two or more intersecting libraries, among other uses. | 12-08-2011 |
20120079465 | COMPILE-TIME BOUNDS CHECKING FOR USER-DEFINED TYPES - Compile-time optimized bounds checking of user-defined types is provided. A user-defined class has an annotated memory-accessing method, and an annotated bound-providing member such as an integer field containing a bound or a method that returns a bound when called. The user-defined-bounds check may supply bounds checking where the programming language has none, or it may supplement existing bounds checks, e.g., by wrapping a built-in array type or a garbage-collector-managed type. Bounds checking can be extended beyond arrays and other types whose layout is controlled by a compiler, allowing efficient systems programming in a managed code environment. A bounds-check representation is inserted by the compiler in intermediate language code. Optimization then reduces duplicative bounds checking. | 03-29-2012 |
20120110560 | DATA TYPE PROVIDER FOR A WEB SEMANTIC STORE - A system and method for facilitating development of a computer program that interfaces with a Web Semantic store (WSS). A system queries an WSS to retrieve interface information, including schema information corresponding to a portion of data in the WSS relevant to a user application. The system uses the retrieved information to provide an integrated development environment to a user. The IDE may include one or more features such as completion lists, tool tips, and quick info. The schema information may be used to create synthetic types for use in the target program. The interface information may be used to create synthetic elements to be inserted into a target program. The synthetic types may be used to perform static type checking during an editing session or a program compilation, or to provide the IDE services. During a build, the synthetic elements may be removed and replaced with WSS access code, which is subsequently used during program runtime to access the store. The system enables a user to work with the WSS as they would for built-in parts of their program. | 05-03-2012 |
20120124564 | MAP TRANSFORMATION IN DATA PARALLEL CODE - A high level programming language provides a map transformation that takes a data parallel algorithm and a set of one or more input indexable types as arguments. The map transformation applies the data parallel algorithm to the set of input indexable types to generate an output indexable type, and returns the output indexable type. The map transformation may be used to fuse one or more data parallel algorithms with another data parallel algorithm. | 05-17-2012 |
20120144376 | EMBEDDED SYSTEM DEVELOPMENT - A computer-implemented method of automatically generating an embedded system on the basis of an original computer program, comprising analyzing the original computer program, comprising a step of compiling the original computer program into an executable to obtain data flow graphs with static data dependencies and a step of executing the executable using test data to provide dynamic data dependencies as communication patterns between load and store operations of the original computer program, and a step of transforming the original computer program into an intermediary computer program that exhibits multi-threaded parallelism with inter-thread communication, which comprises identifying at least one static and/or dynamic data dependency that crosses a thread boundary and converting said data dependency into a buffered communication channel with read/write access. | 06-07-2012 |
20120151457 | COBOL TO BYTECODE TRANSLATION - A system that translates source code of a compiled high level language into bytecode. Compiled languages are so named because their implementations are typically compilers that generate machine code. The described system takes source code of the compiled high level language and translates it into bytecode. The bytecode can be optimized with control flow analysis and method splitting. | 06-14-2012 |
20120167066 | COMPILER VALIDATION VIA PROGRAM VERIFICATION - To overcome the difficulties inherent in traditional compiler validating methods, a new technique is herein provided for validating compiler output via program verification. In one embodiment, this technique is implemented as an automated tool that merges both a source program and the compiler-generated target program into a single (intermediate) program. An automated program verifier is then applied to the merged program. Subsequently, the program verifier compares the source and target programs and determines if the programs are semantically equivalent. | 06-28-2012 |
20120260238 | Efficient Automated Translation of Procedures in an Constraint-Based Programming Language Implemented with Notification and Callback - A method is provided for translating sets of constraint declarations to imperative code sequences based on defining an instantiatable object per set, inserting calls to a notification callback mechanism on state modification and defining calls in the constraint context as imperative code sequences that, in response to these callbacks, take actions to maintain these constraints. This notification and callback mechanism can also be employed in connection with external events, thereby providing for efficient implementation of event-sequenced imperative procedures in a constraint programming language. | 10-11-2012 |
20120317556 | OPTIMIZING EXECUTION OF KERNELS - The present invention extends to methods, systems, and computer program products for optimizing execution of kernels. Embodiments of the invention include an optimization framework for optimizing runtime execution of kernels. During compilation, information about the execution properties of a kernel are identified and stored alongside the executable code for the kernel. At runtime, calling contexts access the information. The calling contexts interpret the information and optimize kernel execution based on the interpretation. | 12-13-2012 |
20120317557 | Pattern Extraction from Executable Code in Message Passing Environments - Processes in a message passing system may be launched when messages having data patterns match a function on a receiving process. The function may be identified by an execution pointer within the process. When the match occurs, the process may be added to a runnable queue, and in some embodiments, may be raised to the top of a runnable queue. When a match does not occur, the process may remain in a blocked or non-executing state. In some embodiments, a blocked process may be placed in an idle queue and may not be executed until a process scheduler determines that a message has been received that fulfills a function waiting for input. When the message fulfills the function, the process may be moved to a runnable queue. | 12-13-2012 |
20130031536 | APPARATUS AND METHOD FOR IMPROVING THE PERFORMANCE OF COMPILERS AND INTERPRETERS OF HIGH LEVEL PROGRAMMING LANGUAGES - A content processing device and corresponding method are disclosed. The content processing device includes a compiler front end to parse programming language source code into an high level intermediate representation and a detection component to detect high level constructs in the intermediate representation of the source code that satisfy constraints for parallel-merging high level constructs. And a parallel-merging component modifies the high level intermediate representation of the source code by parallel-merging the detected constructs to generate new high level parallel-merged constructs in a modified high-level intermediate representation of the source code that enable runtime operations of the detected constructs when finally lowered into processor instructions to be able to execute in parallel using the executable code generated from the modified intermediate representation. | 01-31-2013 |
20130074055 | Memoization Configuration File Consumed at Compile Time - 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. At compile time, functions defined in the configuration file may be captured and memoized. During compilation or other pre-execution analysis, the executable code may be modified or otherwise decorated to include memoization code. The memoization code may store results from a function during the first execution, then merely look up the results when the function may be called again. The memoized value may be stored in the configuration file or in another data store. In some embodiments, the modified executable code may operate in conjunction with an execution environment, where the execution environment may optionally perform the memoization. | 03-21-2013 |
20130159982 | Language Translation Using Preprocessor Macros - A method is provided for providing consistent logical code across specific programming languages. The method incorporates preprocessor macros in a source computer program code to generate a program control flow. The preprocessor macros can be used to describe program control flow in the source programming language for execution in the source computer program code. The preprocessor macros can also be used to generate control flow objects representing the control flow, which converts the source computer program code into a general language representation. The general language representation when executed is used to output computer programming code in specific programming languages representing the same logical code as that of the source computer program code. | 06-20-2013 |
20130212568 | Method and Apparatus for Synchronization Annotation - Methods and system for providing synchronization of a multi-threaded application includes analyzing a source file of the application to identify one or more synchronization annotations contained therein, wherein the synchronization annotations are defined using declarative statements. One or more synchronization annotation processors are identified and invoked for processing the one or more synchronization annotations identified in the source file so as to generate code files. The source file is compiled to generate one or more class files by compiling the procedural code within the source file to generate one or more class files, and compiling the code files to generate the one or more class files. The class files associated with the code files are used by the multiple threads during execution of the application to arbitrate access to methods and data manipulated by classes within the class files associated with the procedural code. | 08-15-2013 |
20130219377 | SCALAR OPTIMIZATIONS FOR SHADERS - Described herein are optimizations of thread loop intermediate representation (IR) code. One embodiment involves an algorithm that, based on data-flow analysis, computes sets of temporary variables that are loaded at the beginning of a thread loop and stored upon exit from a thread loop. Another embodiment involves reducing the size of a thread loop trip for a commonly-found case where a piece of compute shader is executed by a single thread (or a compiler-analyzable range of threads). In yet another embodiment, compute shader thread indices are cached to avoid excessive divisions, further improving execution speed. | 08-22-2013 |
20130219378 | VECTORIZATION OF SHADERS - Intermediate representation (IR) code is received as compiled from a shader in the form of shader language source code. The input IR code is first analyzed during an analysis pass, during which operations, scopes, parts of scopes, and if-statement scopes are annotated for predication, mask usage, and branch protection and predication. This analysis outputs vectorization information that is then used by various sets of vectorization transformation rules to vectorize the input IR code, thus producing vectorized output IR code. | 08-22-2013 |
20130305229 | ANALYSIS OF DYNAMIC ELEMENTS IN BOUNDED TIME - A code analysis system is described herein that provides code completion for programming languages that include elements that are not statically discoverable and that provides results in a predictable period that is acceptable for an interactive user interface. The system compiles each file into an intermediate state that can be stored and cached to speed later analysis of files. In addition, when executing a particular file, the system monitors a time-based threshold and/or a recursion depth so that if the compilation time is exceeding the threshold or a function is exceeding the recursion depth the system can stop the execution and use the intermediate results obtained up to that point to provide as much information as possible within a bounded execution time. When dynamic analysis fails, the system falls back to static analysis. | 11-14-2013 |
20130326491 | De-Serialization of Objects Based on Difference in Information Content - A mechanism is provided for de-serializing a representation of a source object of a source software component written in a source language into a target software component written in a target language. A representation of the source object is received and a determination is made of a set of candidate types among a plurality of available types that are in the target language for the target software component, each candidate type being compatible with the representation of the source type. A set of match metrics is calculated, each one for a corresponding candidate type, where the match metric being indicative of a difference in information content between the candidate type and the representation of the source object. One of the candidate types is selected according to the match metrics and a mapping of the representation of the source object onto a target object of the selected candidate type is created. | 12-05-2013 |
20140013314 | RECORDING MEDIUM STORING COMPILING PROGRAM, COMPILING METHOD, AND COMPILING DEVICE - A recording medium storing therein a compiling program to be executed by a computer, the program includes: compiling a portion of a source corresponding to at least one operation of a plurality of operations into at least one partial object of a plurality of partial objects included in an object; generating first information for identifying a portion involved in the compiling of the at least one partial object; and storing, in a memory, object expansion information including second information, which indicates the at least one operation, and the first information, with associating the object expansion information with the at least one partial object, wherein the object expansion information identifies a partial object generated by a portion involved in the compiling relating to a compilation failure. | 01-09-2014 |
20140026127 | Automated Compiler Specialization for Global Optimization - Techniques are provided herein for the offline static analysis of a stable code base in order to build a compiler and tools specialised to that code base. This allows global code base knowledge to be applied earlier in the compilation process giving better opportunities for optimisation. The offline static analysis produces specialized compiler components that are then used to rebuild the compiler. This results, over time, in a compiler specialized to the code base with improved optimization after every compiler release cycle. | 01-23-2014 |
20140109068 | METHOD FOR COMPILING AN INTERMEDIATE CODE OF AN APPLICATION - A method for compiling an original application written in an intermediate code, in which the original application is executed by means of a virtual machine. The method supplies a native application having a native binary code. The method includes: extracting at least one intermediate code instruction at at least one corresponding function input point; a first step of compiling the intermediate code of the application to a code that includes control flow management and calls said at least one input point of each function implementing the instructions of the intermediate code; and a second step of compiling the compiled application code and intermediate code functions supplying the optimised native application. | 04-17-2014 |
20140115568 | GENERATING A DIVERSE PROGRAM - A system for generating a diverse program can include a diversification unit configured to generate the diverse program that can include a given set of instructions implemented as machine code and/or assembly language instructions based on a compiled program. The compiled program can include another set of instructions implemented as machine code and/or assembly language instructions. | 04-24-2014 |
20140123119 | COBOL TO BYTECODE TRANSLATION - A system that translates source code of a compiled high level language into bytecode. Compiled languages are so named because their implementations are typically compilers that generate machine code. The described system takes source code of the compiled high level language and translates it into bytecode. The bytecode can be optimized with control now analysis and method splitting. | 05-01-2014 |
20140130024 | Automatic License Entitlement Calculation - Techniques for automatic license entitlement calculation. A method includes decomposing a license metric definition into metric-generic and metric-specific logic, compiling the metric-specific logic to generate intermediate code, interpreting the metric-generic logic and dynamically loading the intermediate code to execute a license entitlement calculation. | 05-08-2014 |
20140157247 | Enabling Symbol Resolution of Private Symbols in Legacy Programs and Optimizing Access to the Private Symbols - A method for generating a binary executable of a program so that private symbols in a module are accessible from another module. In one embodiment, the method compiles a source program to an intermediate representation and scans the representation to find the private symbols in the program's modules. It then wraps a function around each private symbol. When called, the function returns an address of the private symbol, so that the other module can access the symbol from outside the module in which the symbol is found. At run time, a call is made to obtain the address of the function, which is then executed to obtain the address of the private symbol so that the symbol can be accessed. In another embodiment, a Just-In-Time compiler executes the wrapper functions and patches the executable program with the direct address of the private symbol to avoid a call to the wrapper function. | 06-05-2014 |
20140189663 | METHOD AND APPARATUS ENABLING MULTI THREADED PROGRAM EXECUTION FOR A COBOL PROGRAM INCLUDING OPENMP DIRECTIVES BY UTILIZING A TWO-STAGE COMPILATION PROCESS - A method and apparatus is disclosed for compilation of an original Cobol program with support for improved performance by increased parallelism during execution using multiple threads of processing. The approach includes a two stage compilation process, the first compilation/translation step by a first specialized compiler/translator that takes as input a Cobol source program that includes parallelization directives, and produces as output an intermediate computer program in a second computer programming language, the intermediate program including parallelization directives in the second computer programming language. The intermediate program is then compiled utilizing a selected second compiler that provides support for parallelism described in the second programming language. The approach optionally allows for use of pragmas serving as parallelization directives to the compiler in the original Cobol program or in the intermediate program. | 07-03-2014 |
20140189664 | METHOD FOR ENABLING COMPILATION OF A COBOL SOURCE PROGRAM UTILIZING A TWO-STAGE COMPILATION PROCESS, THE COBOL SOURCE PROGRAM INCLUDING A MIX OF COBOL, C++ or JAVA STATEMENTS, AND OPTIONAL OPENMP DIRECTIVES - A method, apparatus, and program product are disclosed for carrying out the compilation of an original Cobol program that includes a mix of Cobol, C++ or JAVA and optional OpenMP directives in a single source program file so as to provide improved performance during execution of the program and improved convenience and features in programming. The approach or method includes performing a compilation (or translation) step utilizing a first compiler or translating program which is a is a specialized compiler/translator that takes as input a Cobol source program including a further provision for the inclusion of C/C++ program statements and OpenMP statements, and produces as output an intermediate computer program, the intermediate program that is entirely in C or C++, the intermediate program being intended for further compilation by an existing selected second compiler, the second compiler being an optimizing compiler that provides support for parallelism for the programs described in the C/C++ programming languages. | 07-03-2014 |
20140196016 | LAYERED PROGRAMMING FOR HETEROGENEOUS DEVICES - A method, a system, and a non-transitory computer readable medium for parallelizing computer program code including a loop are presented. An intermediate language version of the computer program code is generated based on a parallel type of the loop, wherein the intermediate language version includes information about parallelism in the computer program code. The intermediate language version is optimized at runtime based on the device characteristics where the computer program code is to be executed. The parallel type may include a thread parallel type, wherein the loop is dispatched to multiple threads for execution, or a general parallel type, wherein the loop is dispatched to a single thread and may be vectorized for execution. The intermediate language version may be saved separate from the computer program code. | 07-10-2014 |
20140245271 | 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. | 08-28-2014 |
20140282447 | PERSISTENT VARIABLES IN PROGRAMMING LANGUAGES - Techniques for automatically persisting variable data are provided. In one embodiment, a computer system can identify, upon compiling or interpreting source code for an application, a variable in the source code that is declared with a predefined keyword. The predefined keyword can indicate that the variable should be persistent. The computer system can then generate, for each instance in the source code where data is assigned to the variable, runtime code for saving the data in a nonvolatile data store. | 09-18-2014 |
20140282448 | OPERATING SYSTEM SUPPORT FOR CONTRACTS - A front-end compiler compiles source code into intermediate code, that may later be compiled into binary code. The source code defines an execution scope and includes a contract. When a contract is encountered at runtime of an execution scope, further execution of that execution scope is conditioned on whether a predicate associated with the contract is true. The front-end compiler operates so as to preserve the contract so that the contract continues to be semantically structured such that the predicate may be removed from the intermediate language code. The contract may thus continue to be understood by semantic analysis of the contract. Thus, the predicate may be understood by static analysis tools that operate on the intermediate code. | 09-18-2014 |
20140289716 | OPTIMIZING INTERMEDIATE REPRESENTATION OF SCRIPT CODE FOR ATOMIC EXECUTION - Disclosed here are methods, systems, paradigms and structures for optimizing intermediate representation (IR) of a script code for atomic execution. Atomic execution of the script is achieved by generating portions of the IR as an atomic transaction. In an atomic transaction, a series of operations either all execute, or none executes. The IR includes checkpoints that evaluate to one of two possible values. The checkpoint evaluates to a first value when there is no error during execution, and evaluates to a second value when an error occurs. The IR is optimized for atomic execution by regenerating a portion of the IR including the checkpoint and code associated with the checkpoint as a transaction. When an error occurs during the execution of the transaction, the transaction is aborted and a state of execution of the script code is reverted to a state prior to the beginning of the transaction. | 09-25-2014 |
20140298304 | Transmission Point Pattern Extraction from Executable Code in Message Passing Environments - Processes in a message passing system may be launched when messages having data patterns match a function on a receiving process. The function may be identified by an execution pointer within the process. When the match occurs, the process may be added to a runnable queue, and in some embodiments, may be raised to the top of a runnable queue. When a match does not occur, the process may remain in a blocked or non-executing state. In some embodiments, a blocked process may be placed in an idle queue and may not be executed until a process scheduler determines that a message has been received that fulfills a function waiting for input. When the message fulfills the function, the process may be moved to a runnable queue. | 10-02-2014 |
20140317607 | OPTIMIZING INTERMEDIATE REPRESENTATION OF SCRIPT CODE BY ELIMINATING REDUNDANT REFERENCE COUNT OPERATIONS - Disclosed here are methods, systems, paradigms and structures for optimizing generation of intermediate representation (IR) for a script code by eliminating redundant object reference count operations from the IR. An IR of the script includes (a) a set of first code that increments a reference count of an object when a programming construct refers to the object, and (b) an associated set of second code which decrements the reference count of the object when a reference to the object is removed. The IR is analyzed to identify a subset of the set of second code which, upon execution, does not decrement the reference count of the object to a zero value. The subset of second code and the first code corresponding to the subset is removed from the IR to generate an optimized IR. The optimized IR is further converted to an executable code. | 10-23-2014 |
20140344791 | METHOD AND APPARATUS FOR CODE SIZE REDUCTION - A method for code size reduction, which comprises determining basic blocks in an IR module; grouping the basic blocks having duplicate code into groups; providing weighting values corresponding to different instructions of the module, wherein the weighting values are determined based on a plurality of intermediate representation program codes; determining a weighted size of the module, wherein the weighted size of the module is determined by summing weighted sizes of the basic blocks of the module, and the weighted size of each basic block is determined by summing products of numbers of different instructions of the basic blocks and the corresponding weighting values; removing duplicates in one group to obtain a module having one processed group; determining a weighted size of the module having one processed group; and comparing the weighted size of the module to the weighted size of the module having one processed group. | 11-20-2014 |
20140372994 | Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control - A method comprising of analyzing and transforming a program executable at compile-time such that a processor design objective is optimized. A method including analyzing an executable to estimate energy consumption of an application component in a processor. A method including transforming an executable to reduce energy consumption in a processor. A processor framework controlled by compiler inserted control that statically exposes parallelism in an instruction sequence. A processor framework to reduce energy consumption in an instruction memory system with compiler inserted control. | 12-18-2014 |
20140372995 | PARALLELIZING COMPILE METHOD, PARALLELIZING COMPILER, PARALLELIZING COMPILE APPARATUS, AND ONBOARD APPARATUS - A parallelizing compile method includes, dividing a sequential program for an embedded system into multiple macro tasks, specifying (i) a starting end task and (ii) a termination end task, fusing (i) the starting end task, (ii) the termination end task, and (iii) a group of the multiple macro tasks, extracting a group of multiple new macro tasks from the multiple new macro tasks fused in the fusing based on a data dependency, performing a static scheduling assigning the multiple new macro tasks to the multiple processor units, so that the group of the multiple new macro tasks is parallelly executable by the multiple processor units, and generating a parallelizing program. In addition, a parallelizing compiler, a parallelizing compile apparatus and an onboard apparatus are provided. | 12-18-2014 |
20150143348 | HYBRID DYNAMIC CODE COMPILING DEVICE, METHOD, AND SERVICE SYSTEM THEREOF - An exemplary embodiment of the present disclosure illustrates a hybrid dynamic code compiling device having a parser, a native code generator, and a dynamic code rewriter, wherein the parser is coupled to the native code generator and the dynamic code rewriter. The parser receives and parses a first dynamic code to divide the first dynamic code into compilable blocks and non-compilable blocks. The native code generator generates a native code according to the compilable blocks. The dynamic code rewriter rewrites the non-compilable blocks to generate a second dynamic code, wherein the second dynamic code has function calls which communicate between the native code and the first dynamic code. | 05-21-2015 |
20150301812 | Metadata-driven Dynamic Specialization - Metadata-driven dynamic specialization may include applying a type erasure operation to a set of instruction in a generic class or to a method declaration that includes typed variables using an encoded form of an instruction or an argument to an instruction. The instruction may operate on values of the reference types and the argument may be a signature that indicates the reference types. The encoded form may be annotated to include metadata indicating which type variables have been erased and which reference types are the erasures of type variables. Additionally, the metadata may indicate that the instruction operates on values of, and that the argument indicates reference types that are erasures of, the type variables of the class (or method) declaration. Moreover, the encoded form of the instruction or argument may be used directly without specialization or transformation. | 10-22-2015 |
20150317134 | ELECTRONIC DEVICE AND METHOD FOR CONVERTING SOURCE CODE INTO MACHINE CODE - An operation method of an electronic device is provided, which includes determining whether a target dependent area exists in a source code, and converting the target dependent area into a target independent Intermediate Representation (IR) when it is determined that the target dependent area exists in the source code. | 11-05-2015 |
20150317138 | Matching Program Sections Through Feature Extraction - Various techniques for matching program sections are described herein. In one example, a method includes organizing a program into blocks based on control flow. The method also includes calculating a plurality of features for each block. The method further includes comparing the calculated features for each block with other blocks and creating a list of equivalent blocks. The method also further includes constructing a list of equivalent program sections utilizing the list of equivalent blocks. | 11-05-2015 |
20150331678 | PROCESS EXECUTION METHOD AND INFORMATION PROCESSING APPARATUS - A non-transitory computer-readable recording medium has a program stored therein for causing a computer to execute a process of processing a program by repeating analysis and execution of a source code having been read. The process includes associating, when the source code includes a definition of a function, a function name identifying the function, with an intermediate representation of the source code corresponding to the function, to be stored; determining whether the intermediate representation having the function associated is stored, when calling the function; executing a procedure corresponding to the function, by using the intermediate representation, when the intermediate representation is stored; and generating the intermediate representation by analyzing the source code corresponding to the function, when the intermediate representation is not stored. | 11-19-2015 |
20150331680 | METHODS AND SYSTEMS FOR EVALUATING BYTECODE IN AN ON-DEMAND SERVICE ENVIRONMENT INCLUDING TRANSLATION OF APEX TO BYTECODE - Techniques and mechanisms for conversion of code of a first type to bytecode. Apex provides various unique characteristics. When converting to bytecode, these characteristics are handled to provide bytecode functionality. Some of the unique characteristics of Apex include Autoboxing, SOQL, Properties, Comparisons, Modifiers, Code coverage mechanisms and Sharing mechanisms. | 11-19-2015 |
20150347102 | PROGRAMMING SYSTEM AND LANGUAGE FOR APPLICATION DEVELOPMENT - In one embodiment, an improved programming system and language for application development is provided that combines elements of the C and Objective-C languages without the constraints imposed by a requirement to maintain compatibility with the C language. The language provides the functionality of the C language compatibility in certain areas to improve the inherent safety of software written in the language. The new language includes default safety considerations such as bounds and overflow checking. | 12-03-2015 |
20150347108 | Language, Function Library, And Compiler For Graphical And Non-Graphical Computation On A Graphical Processor Unit - A compiler and library provide the ability to compile a programming language according to a defined language model into a programming language independent, machine independent intermediate representation, for conversion into an executable on a target programmable device. The language model allows writing programs that perform data-parallel graphics and non-graphics tasks. | 12-03-2015 |
20150378693 | COMPILING NESTED RELATIONAL ALGEBRAS WITH MULTIPLE INTERMEDIATE REPRESENTATIONS - Aspects of the present invention provide a solution for compiling data. In an embodiment, an input query is received in a first language. The input query is translated to a nested relational algebra (NRA) in the form of a first intermediate representation (IR), wherein the first IR comprises a high-level functional language including algebraic operators. A set of algorithms of the algebraic operators is implemented to compile at least some of the first IR into a second IR, wherein the second IR comprises a data-flow language. At least one of the first IR and the second IR is compiled into a low-level code. | 12-31-2015 |
20150378697 | INCREMENTAL COMPILATION OF WHOLE PROGRAM CODE - Methods, systems, and computer program products are provided that enable incremental compilation of source code. Attributes of an intermediate language (IL) representation and a compiled representation of a source code are stored. Modified source code that is a revised version of the first source code is received. An IL representation of the modified source code is generated. Attributes of the revised intermediate IL and the stored attributes of the IL representation are compared to determine a first set of functions changed in the modified source code. A second set of functions in the first source code is determined that includes functions affected the determined first set of functions. The first and second sets of functions are compiled to generate a set of compiled functions. Compiled versions of the first and second sets are replaced in the compiled representation of the first source code with the set of compiled functions. | 12-31-2015 |
20160048381 | METHOD AND SYSTEM FOR CODE GENERATION - A method and system for providing target code to various computer systems. The target code is provided by a service. The service provides a mechanism for third-party developers to submit initial or base code for distribution to end-user computers as target code. The service converts the initial code to target code that is suitable for execution on the end-user computers. When the service receives the request for target code that matches certain requester-specified characteristics, it selects the intermediate code that best matches the requester-specified characteristics. The service then sends the target code to the requester. | 02-18-2016 |
20160085524 | ANALYSIS OF DYNAMIC ELEMENTS IN BOUNDED TIME - A code analysis system is described herein that provides code completion for programming languages that include elements that are not statically discoverable and that provides results in a predictable period that is acceptable for an interactive user interface. The system compiles each file into an intermediate state that can be stored and cached to speed later analysis of files. In addition, when executing a particular file, the system monitors a time-based threshold and/or a recursion depth so that if the compilation time is exceeding the threshold or a function is exceeding the recursion depth the system can stop the execution and use the intermediate results obtained up to that point to provide as much information as possible within a bounded execution time. When dynamic analysis fails, the system falls back to static analysis. | 03-24-2016 |
20160132303 | MULTI-SIZED DATA TYPES FOR MANAGED CODE - Embodiments are directed towards generating applications that include multi-sized types running in managed code. During the compilation of an intermediate language version of an application, if a multi-size type is encountered, a runtime engine may perform actions to process the multi-size types. Accordingly, architecture information associated with the target computer may be determined. Data types corresponding to the architecture of the target computer and the multi-sized types may be determined based on the architecture information. Native code calls associated with an intermediate language code calls may be determined such that the parameters of the native code calls match the architecture dependent data types. And, a machine code version of the intermediate language code call may be generated. The generated machine code version of the intermediate language code may be executed with the data types specific to the target computer. | 05-12-2016 |
20160139899 | OPTIMIZING INTERMEDIATE REPRESENTATION OF SCRIPT CODE FOR FAST PATH EXECUTION - Disclosed here are methods, systems, paradigms and structures for optimizing intermediate representation (IR) of a script code for fast path execution. A fast path is typically a path that handles most commonly occurring tasks more efficiently than less commonly occurring ones which are handled by slow paths. The less commonly occurring tasks may include uncommon cases, error handling, and other anomalies. The IR includes checkpoints which evaluate to two possible values resulting in either a fast path or slow path execution. The IR is optimized for fast path execution by regenerating a checkpoint as a labeled checkpoint. The code in the portion of the IR following the checkpoint is optimized assuming the checkpoint evaluates to a value resulting in fast path. The code for handling situations where the checkpoint evaluates to a value resulting in slow path is transferred to a portion of the IR identified by the label. | 05-19-2016 |
20160170726 | COMPILER | 06-16-2016 |
20160179490 | COMPILER | 06-23-2016 |
20220137941 | COMPILATION METHOD, APPARATUS, COMPUTING DEVICE AND MEDIUM - A compilation method, a compilation apparatus suitable for an In-Memory Computing apparatus, a computing device and a storage medium. The compilation method includes: acquiring calculation information of an algorithm to be compiled; converting the algorithm to be compiled into the first intermediate representation according to the calculation information; mapping the first intermediate representation to the second intermediate representation; and compiling the algorithm to be compiled into instruction information recognized by the In-Memory Computing apparatus according to the hardware information, to make the In-Memory Computing apparatus execute the instruction information. The compilation method may compile the calculation information into instructions that may be directly executed by the In-Memory Computing apparatus, so as to realize the effect of accelerating the operations of various algorithms by using the In-Memory Computing apparatus. | 05-05-2022 |