Including Intermediate Code Patents (Class 717/146)
-
Publication number: 20130219378Abstract: 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.Type: ApplicationFiled: February 16, 2012Publication date: August 22, 2013Applicant: Microsoft CorporationInventors: Andy Glaister, Blaise Pascal Tine, Blake Pelton, Derek Sessions, Mikhail Lyapunov, Yuri Dotsenko
-
Patent number: 8516467Abstract: A method and apparatus that utilizes techniques for formatting assembly and/or machine code, including using arrows, indentations and textual symbols, so that a programmer who reads the code has an enhanced understanding of the program flow. Different methods of assessing computing time complexity (e.g., the up branch method and the strongly connected subgraph method) have strengths and weaknesses but benefit from being used together.Type: GrantFiled: August 31, 2010Date of Patent: August 20, 2013Assignee: Nintendo Co., Ltd.Inventors: Nathaniel Guy, Chad Hinkle, Mark Jawad, Steve Rabin
-
Patent number: 8516229Abstract: A test code generation technique that replaces instructions having a machine state dependent result with special redirection instructions provides generation of test code in which state dependent execution choices are made without a state model. Redirection instructions cause execution of a handler than examines the machine state and replaces the redirection instruction with a replacement instruction having a desired result resolved in accordance with the current machine state. The instructions that are replaced may be conditional branch instructions and the result a desired execution path. The examination of the machine state permits determination of a branch condition for the replacement instruction so that the next pass of the test code executes along the desired path. Alternatively, the handler can execute a jump to the branch instruction, causing immediate execution of the desired branch path.Type: GrantFiled: February 5, 2010Date of Patent: August 20, 2013Assignee: International Business Machines CorporationInventors: Allon Adir, Brad Lee Herold, John Martin Ludden, Pedro Martin-de-Nicolas, Charles Leverett Meissner, Gil Eliezer Shurek
-
Publication number: 20130212568Abstract: 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.Type: ApplicationFiled: February 10, 2012Publication date: August 15, 2013Applicant: Oracle International CorporationInventors: Yi Huang, David Leibs, Peter Kessler
-
Patent number: 8510724Abstract: The present invention extends to methods, systems, and computer program products for reconstructing program control flow. Embodiments include implementing or morphing a control flow graph (“CFG”) into an arbitrary loop structure to reconstruct (preserve) control flow from original source code. Loop structures can be optimized and can adhere to target platform constraints. In some embodiments, C++ source code (a first higher level format) is translated into a CFG (a lower level format). The CFG is then translated into High Level Shader Language (“HLSL”) source code (a second different higher level format) for subsequent compilation into SLSL bytecode (that can then be executed at a Graphical Processing Unit (“GPU”)). The control flow from the C++ source code is preserved in the HLSL source code.Type: GrantFiled: December 17, 2010Date of Patent: August 13, 2013Assignee: Microsoft CorporationInventors: Yosseff Levanoni, Weirong Zhu, Lingli Zhang, John Lee Rapp, Andrew L. Bliss
-
Patent number: 8505001Abstract: 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.Type: GrantFiled: August 25, 2010Date of Patent: August 6, 2013Assignee: Broadcom CorporationInventor: Eben Upton
-
Patent number: 8499292Abstract: A virtual execution environment (VEE) for a streaming Intermediate Language (IL), wherein the streaming IL represents a streaming program, communicates streaming data in queues, stores data-at-rest in variables, and determines data by functions, where inputs are read from the queues and the variables, and outputs are written to the queues and the variables.Type: GrantFiled: March 8, 2010Date of Patent: July 30, 2013Assignee: International Business Machines CorporationInventors: Henrique Andrade, Jim Challenger, Bugra Gedik, Robert Grimm, Martin J. Hirzel, Vibhore Kumar, Robert Soule, Kun-Lung Wu
-
Patent number: 8484629Abstract: Various technologies and techniques are disclosed for providing a programming model for modular development. A definition feature is provided that allows a definition to be specified for a particular method that is part of an application. A production feature allows a functionality implementation to be specified for the particular method separately from the definition. A consumption feature allows a method call to be made indirectly to the functionality implementation of the particular method by referencing the definition of the particular method from a consuming method. The consuming method has no awareness of the functionality implementation for the particular method. An analysis process inspects components containing indirect associations between these consumers and producers of application functionality to generate a graph of direct associations between the consumers and producers without having to actually load the components. A loader process uses the graph of direct associations to run the application.Type: GrantFiled: May 24, 2007Date of Patent: July 9, 2013Assignee: Microsoft CorporationInventors: Patrick Dengler, Oleg Lvovitch, Randy Kimmerly
-
Patent number: 8477328Abstract: From among identical modules stored on a module storage 112 and a module storage 212, an authenticated printing management module 130 selects the module with higher level information. For example, an ID authentication module 132 is stored in both the module storage 112 of an MFP 10 and the module storage 212 of a network interface card 11. The authenticated printing management module 130 selects the ID authentication module of the network interface card 11, in accordance with level information that represents an ID authentication module selection hierarchy. By so doing, where modules necessary for executing authenticated printing are included on both the MFP 10 and the network interface card 11, modules present on either the MFP 10 or the network interface card 11 are able to be selected appropriately for use.Type: GrantFiled: September 25, 2008Date of Patent: July 2, 2013Assignee: Seiko Epson CorporationInventors: Shinya Taniguchi, Taro Ishige, Koki Go
-
Patent number: 8479177Abstract: A programming environment may have an abstract interface definition that may contain a redirection definition that may cause a call to be bound to a redirected method or function. The redirected method or function may be a conditional redirection, and some embodiments may perform various checks including signature checks, static and runtime access checks, and other verifications for the redirected method. The redirection may enable a programmer to modify a portion of an interface without having to re-implement all of the functions of the interface.Type: GrantFiled: May 20, 2009Date of Patent: July 2, 2013Assignee: Microsoft CorporationInventors: Raja Kirshnaswamy, Yi Zhang, Scott D. Mosier, Ladislav Prosek, Xiaoying Guo
-
Publication number: 20130159982Abstract: 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.Type: ApplicationFiled: December 16, 2011Publication date: June 20, 2013Inventor: Apostolos Lerios
-
Patent number: 8468504Abstract: A method and apparatus for the manually optimizing the scheduling of code are disclosed. Accordingly, a software development tool with a graphical user interface enables manually ordering the scheduling of operations for architectures that execute multiple instructions/operations per machine cycle, such as very long instruction word (VLIW) processors. Assistance is provided at the instruction scheduling stage of VLIW compilation process to increase instruction level parallelism (ILP). The apparatus provides graphical views of assembly code and related information. An interactive, user friendly method to manipulate the code during or after scheduling is provided. The programmer can temporarily pause the automated scheduling, override decision taken by the scheduler, and then resume scheduling. The method lets the programmer interact graphically with scheduling decisions in a feedback environment.Type: GrantFiled: December 28, 2007Date of Patent: June 18, 2013Assignee: Streaming Networks (PVT.) Ltd.Inventors: Ahmad Hassan, Haroon-ur Rashid, Mazhar Iqbal, Mohammad Ayub Khan
-
Patent number: 8458679Abstract: 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.Type: GrantFiled: September 22, 2010Date of Patent: June 4, 2013Assignee: International Business Machines CorporationInventors: Roch G. Archambault, Shimin Cui, Yaoqing Gao
-
Patent number: 8453126Abstract: A system and method for automated conversion of a SAS runtime macro language (RML) program to a target language program such as JAVA. RML macros are identified and converted for inclusion in the RML program. A lexer is applied to generate a stream of tokens, including a token type for ambiguous tokens. A context dependent parsing module, including a token filter to resolve ambiguous tokens, assists the parser in generating an abstract syntax tree (AST), which is modified to express RML specific control flow constructs with target language program elements. The elements of the modified AST are replaced with target language templates from a library, with template parameters filled from the corresponding AST element. A run time library is provided for execution of the target language program.Type: GrantFiled: July 30, 2009Date of Patent: May 28, 2013Assignee: Dulles Research LLCInventor: Pavel Ganelin
-
Patent number: 8448153Abstract: A method and system encodes data objects and their metadata. An implementation provides a method and system for rewriting a program to encode metadata in the run-time environment of the program and to add run-time checks to the program. An implementation provides a method for serializing a data object according to the encoding method and a method for deserializing a bit sequence that is generated by the serialization method.Type: GrantFiled: August 16, 2010Date of Patent: May 21, 2013Inventor: Ning Wang
-
Patent number: 8448156Abstract: A runtime system implemented in accordance with the present invention provides an application platform for parallel-processing computer systems. Such a runtime system enables users to leverage the computational power of parallel-processing computer systems to accelerate/optimize numeric and array-intensive computations in their application programs. This enables greatly increased performance of high-performance computing (HPC) applications.Type: GrantFiled: February 27, 2012Date of Patent: May 21, 2013Assignee: Googe Inc.Inventors: Christopher G. Demetriou, Matthew N. Papakipos
-
Patent number: 8443348Abstract: A runtime system implemented in accordance with the present invention provides an application platform for parallel-processing computer systems. Such a runtime system enables users to leverage the computational power of parallel-processing computer systems to accelerate/optimize numeric and array-intensive computations in their application programs. This enables greatly increased performance of high-performance computing (HPC) applications.Type: GrantFiled: March 5, 2007Date of Patent: May 14, 2013Assignee: Google Inc.Inventors: Morgan S. McGuire, Christopher G. Demetriou, Brian K. Grant, Matthew N. Papakipos
-
Patent number: 8443349Abstract: A runtime system implemented in accordance with the present invention provides an application platform for parallel-processing computer systems. Such a runtime system enables users to leverage the computational power of parallel-processing computer systems to accelerate/optimize numeric and array-intensive computations in their application programs. This enables greatly increased performance of high-performance computing (HPC) applications.Type: GrantFiled: February 9, 2012Date of Patent: May 14, 2013Assignee: Google Inc.Inventors: Matthew N. Papakipos, Brian K. Grant, Morgan S. McGuire, Christopher G. Demetriou
-
Patent number: 8443347Abstract: The present invention extends to methods, systems, and computer program products for translating declarative models. Embodiments of the present invention facilitate processing declarative models to perform various operations on applications, such as, for example, application deployment, application updates, application control such as start and stop, application monitoring by instrumenting the applications to emit events, and so on. Declarative models of applications are processed and realized onto a target environment, after which they can be executed, controlled, and monitored.Type: GrantFiled: October 19, 2011Date of Patent: May 14, 2013Assignee: Microsoft CorporationInventors: Igor Sedukhin, Leo S. Vannelli, III, Girish Mittur Venkataramanappa, Sumit Mohanty, Cristian S. Salvan, Anubhav Dhoot, Rama Rao Raghavendra Rao
-
Patent number: 8434070Abstract: Systems and methods are provided for creating a data structure associated with a software application that is based on at least one framework. According to the method, source code and at least one configuration file of the software application is analyzed by at least one framework-specific processor so as to determine entry point information indicating entry points in the source code, request attribute access information indicating where attributes attached to a request data structure are read and written, and forward information indicating forwards performed by the software application. A data structure for a static analysis engine is created based on this information. The data structure includes a list of synthetic methods that model framework-related behavior of the software application, and a list of entry points indicating the synthetic methods and/or application methods of the software application that can be invoked by the framework.Type: GrantFiled: October 26, 2010Date of Patent: April 30, 2013Assignee: International Business Machines CorporationInventors: Shay Artzi, Ryan Berg, John T. Peyton, Jr., Marco Pistoia, Manu Sridharan, Robert Wiener
-
Patent number: 8423977Abstract: System and method for converting a class oriented data flow program to a structure oriented data flow program. A first data flow program is received, where the first data flow program is an object oriented program comprising instances of one or more classes, and wherein the first data flow program is executable to perform a first function. The first data flow program is automatically converted to a second data flow program, where the second data flow program does not include the instances of the one or more classes, and where the second data flow program is executable to perform the first function. The second data flow program is stored on a computer memory, where the second data flow program is configured to be deployed to a device, e.g., a programmable hardware element, and where the second data flow program is executable on the device to perform the first function.Type: GrantFiled: April 27, 2009Date of Patent: April 16, 2013Assignee: National Instruments CorporationInventors: Stephen R. Mercer, Akash B. Bhakta, Matthew E. Novacek
-
Patent number: 8423953Abstract: A system and method for converting byte code of a first type into byte code of a second type. Byte code of a first type and markup language code are received as inputs. The first byte code is converted into constituent byte code data elements that can comprise any logical unit or grouping of at least a portion of a software application. The markup language code is converted into constituent markup language data elements that can comprise individual markup language tags and references to data or functionality in the first byte code. The first byte code data elements and markup language data elements are mapped to data elements of a second byte code type. The second byte code data elements are assembled into a resulting second byte code.Type: GrantFiled: November 29, 2010Date of Patent: April 16, 2013Assignee: Appcelerator, Inc.Inventors: Paul Colton, Kevin Edward Lindsey, Roland Ingomar Muschenetz, Robin Sean Debreuil
-
Patent number: 8418135Abstract: Some embodiments of a method and an apparatus to abstract away rule languages from a rule engine have been presented. In one embodiment, rules written in a first rule language are parsed into descriptor classes, which are used to model concepts that can be expressed in a rule engine. An intermediate structure is generated from the parsed rules. The intermediate structure is input to a core of the rule engine, which is operable to execute the rules.Type: GrantFiled: May 31, 2007Date of Patent: April 9, 2013Assignee: Red Hat, Inc.Inventors: Mark Proctor, Edson Tirelli, Robert K. McWhirter
-
Publication number: 20130086549Abstract: A cloud computing interface includes a high-level compiler uses a modified flow language referred-to as “Resilient Optimizing Flow Language” (ROFL) that converts inputs relating to source program and data definitions to generate bytecode objects that can be used by an execution engine to allocate input data to “processes” created by the execution engine based on available resources, so as to evaluate or perform particular tasks on the input data.Type: ApplicationFiled: November 10, 2011Publication date: April 4, 2013Applicant: Resilient Science, Inc.Inventors: Jonathan D. Riehl, Christopher R. Cope
-
Publication number: 20130086566Abstract: A medium, method, and apparatus are disclosed for eliding superfluous function invocations in a vector-processing environment. A compiler receives program code comprising a width-contingent invocation of a function. The compiler creates a width-specific executable version of the program code by determining a vector width of a target computer system and omitting the function from the width-specific executable if the vector width meets one or more criteria. For example, the compiler may omit the function call if the vector width is greater than a minimum size.Type: ApplicationFiled: September 29, 2011Publication date: April 4, 2013Inventors: Benedict R. Gaster, Lee W. Howes
-
Publication number: 20130086565Abstract: A medium and method is disclosed for compiling vector programs. A compiler receives program code that includes a function invocation. The compiler determines the vector width of a target computer system and creates a width-specific executable version of the program code by mapping the function invocation to a width-specific implementation of the function. The width-specific implementation corresponds to the vector width of the target computer system.Type: ApplicationFiled: September 29, 2011Publication date: April 4, 2013Inventors: Benedict R. Gaster, Lee W. Howes
-
Patent number: 8413125Abstract: A computer is programmed to automatically have multiple sessions update a common counter which is shared therebetween, when interpreting a given method so that system-wide statistics are collected for each method. The single counter is commonly accessed for updating by the respective interpreters in the multiple sessions which are executing the method. The computer is further programmed to asynchronously compile the method (regardless of the state of the multiple sessions), to obtain compiled software in the form of executable machine instructions. Specifically, asynchronous compilation starts dynamically, whenever a method's common multi-session counter satisfies a predetermined condition. Finally, each session is informed when compilation is completed so that the next time the method needs to be run, it is not interpreted and instead the compiled software is executed. The compiled software is kept in a shared memory which is accessible to each session.Type: GrantFiled: January 26, 2007Date of Patent: April 2, 2013Assignee: Oracle International CorporationInventors: Robert H. Lee, David Unietis, Mark Jungerman
-
Publication number: 20130074055Abstract: 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.Type: ApplicationFiled: November 8, 2012Publication date: March 21, 2013Applicant: Concurix CorporationInventor: Concurix Corporation
-
Patent number: 8401973Abstract: Methods and systems for activating an add-on software component independently of any host application with which the add-on component is compatible are described. Consistent with some embodiments, an add-on manager module can be invoked from any host application that is part of a suite of applications. The add-on manager module displays a list of add-on components that are installed, and compatible with a particular host application. After receiving product activation data (e.g., serial number or product key) for a particular installed add-on component, a license verification operation is performed to validate the product activation data, and activate the add-on component for use with a host application.Type: GrantFiled: November 19, 2009Date of Patent: March 19, 2013Assignee: Adobe Systems IncorporatedInventors: Sanjeev Kumar Biswas, Akash Jain, Kanika Dalmia Gupta
-
Patent number: 8402450Abstract: 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.Type: GrantFiled: November 17, 2010Date of Patent: March 19, 2013Assignee: Microsoft CorporationInventors: Paul F. Ringseth, Yosseff Levanoni, Weirong Zhu
-
Patent number: 8402449Abstract: A system and method automatically inserts pipelines into a high-level program specification. An Intermediate Representation (IR) builder creates one or more graphs or trees based on the high-level program specification. A scheduler iteratively applies a bounded scheduling algorithm to produce an execution schedule for the IR minimizing overall execution time for a given number of pipeline stages. A Hardware Description Language (HDL) code generator may utilize the pipelined, scheduled IR to generate optimized HDL code corresponding to the high-level program specification. An annotated version of the high-level program specification showing where the pipelines have been inserted may be displayed allowing additional design exploration.Type: GrantFiled: January 10, 2008Date of Patent: March 19, 2013Assignee: The MathWorks, Inc.Inventors: Partha Biswas, Vijaya Raghavan, Zhihong Zhao
-
Publication number: 20130067441Abstract: Methods, systems, and computer program products are provided for profiling source code to enable improved source code execution. A runtime engine includes a parser, a bytecode generator, an execution controller, an interpreter, a just-in-time (JIT) compiler, and a profile generator. The parser receives source code coded in a dynamic language and parses the source code to generate parsed source code. The bytecode generator converts the parsed source code to bytecode. The interpreter is configured to interpret the bytecode when enabled by the execution controller. The JIT compiler is configured to compile the bytecode when enabled by the execution controller. The profile generator generates profile information from the bytecode and stores the profile information. The execution controller enables the interpreter or the JIT compiler to perform their respective functions based on the profile information.Type: ApplicationFiled: September 9, 2011Publication date: March 14, 2013Applicant: MICROSOFT CORPORATIONInventors: Louis Lafreniere, Curtis Man, Jedrzej Miadowicz, Paul Leathers, Jitendra Kumar, Arjun Bijanki
-
Patent number: 8392897Abstract: An inherently safe code format for representing computer programs is disclosed. The format provides incorruptible referential integrity and uses type separation to achieve intrinsic type safety. The format preserves a safety guarantee found in a source code language representation of the computer program while the computer program proceeds through various stages of the code compilation process.Type: GrantFiled: August 15, 2006Date of Patent: March 5, 2013Assignee: The Regents of the University of CaliforniaInventors: Michael Franz, Wolfram Amme, Jeffrey Von Ronne
-
Patent number: 8387069Abstract: An improved system and method is disclosed for making the Common Information Model (CIM), produced by the Distributed Management Task Force (DMTF), more flexible and extensible without requiring changes to it or its existing implementations. MultipleInheritance associations are implemented to define extension abstract classes for managed element information and to create static and dynamic add-in classes, all operable to reference the CIM schema class. Ambiguity is mitigated by not allowing properties of different data types to have the same name in super classes that are used for MultipleInheritance associations. Data integrity is facilitated by merging class properties of the same name and data type through the use of a Min algorithm. Concrete user classes are derived from new abstract classes such that management functionality is enabled for managed element properties.Type: GrantFiled: July 28, 2006Date of Patent: February 26, 2013Assignee: Dell Products L.P.Inventors: Jianwen Yin, Timothy Abels
-
Patent number: 8387025Abstract: A system for dynamically integrating changes in the rules governing business operations into an application program that implements the rules in order to control business operations includes a dynamic business logic rule integrator (“DBLRI”) that essentially provides business logic rules to the application software as executable routines. The DBLRI presents to a user one or more graphical user interfaces (“GUIs”) through which the user writes functional-language expressions for the business logic rules. The respective GUIs correspond to various types of business logic rules, and provide to the user menus of associated functions, operators and parameters that are available for use. The set of parameters associated with a given GUI is dynamically updated, to correspond to changes in the underlying business logic rules. The user writes and/or edits the expressions for the respective business logic rules by selectively combining the available functions, operators and parameters.Type: GrantFiled: September 8, 2006Date of Patent: February 26, 2013Assignee: Millennium IT (USA) Inc.Inventor: Lakshitha C. Surasinghe
-
Patent number: 8375355Abstract: System and method for converting a class oriented data flow program to a structure oriented data flow program. A first data flow program is received, where the first data flow program is an object oriented program comprising instances of one or more classes, and wherein the first data flow program is executable to perform a first function. The first data flow program is automatically converted to a second data flow program, where the second data flow program does not include the instances of the one or more classes, and where the second data flow program is executable to perform the first function. The second data flow program is stored on a computer memory, where the second data flow program is configured to be deployed to a device, e.g., a programmable hardware element, and where the second data flow program is executable on the device to perform the first function.Type: GrantFiled: April 27, 2009Date of Patent: February 12, 2013Assignee: National Instruments CorporationInventors: Stephen R. Mercer, Akash B. Bhakta, Matthew E. Novacek
-
Patent number: 8375373Abstract: 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.Type: GrantFiled: April 19, 2010Date of Patent: February 12, 2013Assignee: Microsoft CorporationInventor: Peter Franz Valentin Sollich
-
Publication number: 20130031536Abstract: 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.Type: ApplicationFiled: July 28, 2011Publication date: January 31, 2013Inventors: Subrato K. De, Dineel D. Sule, Kun Zhang
-
Patent number: 8365156Abstract: 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.Type: GrantFiled: April 17, 2010Date of Patent: January 29, 2013Assignee: Microsoft CorporationInventor: Peter Franz Valentin Sollich
-
Patent number: 8365153Abstract: A server is disclosed that includes an interface to a data communication network, a compiler library that stores a plurality of different compilers, and compiler selection logic responsive to data received at the interface and including logic. The compiler selection logic is configured to select one of the plurality of different compilers based on an evaluation of the received data. The selected compiler generates compiled output data and the compiled output data is communicated over the data communication network to a client.Type: GrantFiled: October 26, 2007Date of Patent: January 29, 2013Assignee: QUALCOMM IncorporatedInventors: Lingjun Chen, Guofang Jiao, Yun Du, Chun Yu
-
Patent number: 8365157Abstract: A system and method for early platform dependency preparation of intermediate code representation during bytecode compilation in a virtual machine (VM), or other runtime environment, and particularly for use in a system that includes a Java Virtual Machine (JVM). Current techniques for separating the platform dependent intermediate representation from the platform independent intermediate representation using a watertight abstraction layer gives non-optimal side effects (such as compiler source code duplication or inefficiency in the generated code). Embodiments of the present invention enable the compiler to construct platform dependent idioms using medium level intermediate code, and maintain the platform dependent construct all the way to the final native code.Type: GrantFiled: October 22, 2007Date of Patent: January 29, 2013Assignee: Oracle International CorporationInventor: Marcus Lagergren
-
Patent number: 8359568Abstract: A data management method includes accessing data objects in an application written in C/C++ for change-logging and multi-step redo/undo, wherein the data objects are organized in a binary format and are devoid of self-describing information, and wherein the accessing the data objects is structured in a plurality of layers, the plurality of layers including a semantic layer, a change log layer, and a repository layer, dynamically analyzing the data objects to recognize all changes made by any of a plurality of users for all data types used by the application, the dynamically analyzing the data including using semantic analysis to track changes and identifying any changes in any of the data objects, and using generated wrapper classes to convert between C/C++ data structures and generic data format, wherein the wrapper classes are generated from developer provided annotations with C/C++ data structure declarations.Type: GrantFiled: December 22, 2008Date of Patent: January 22, 2013Assignee: International Business Machines CorporationInventors: Juergen Baumann, Friedrich Beichter, Jochen Hoffman, Thomas Pohl
-
Patent number: 8359586Abstract: In an embodiment, a code generator receives input code having a plurality of functional elements, such as blocks, nodes, statements, commands, etc. The input code processes a data set, such as an image file. The code generator further receives one or more criteria for the generated code. The functional elements of the input code are provided with one or more parameters regarding the block sizes that the respective functional elements can process, such as an available block size and a preferred block size. The code generator queries the functional elements of the input code to obtain their available and preferred block sizes, and builds an intermediate representation (IR) of the input code. The code generator re-organizes and modifies the IR so that it achieves the one or more criteria. Output code that meets the one or more criteria is generated from the reorganized and modified IR.Type: GrantFiled: August 20, 2007Date of Patent: January 22, 2013Assignee: The MathWorks, Inc.Inventors: Donald P. Orofino, II, Witold R. Jachimczyk
-
Patent number: 8352929Abstract: A method for preventing the unauthorized modification of a software or unauthorized modification of runtime data. According to this method, a converter, which is capable of converting the software into a generalized machine code is provided. The converter is designed such that it cannot be reverse engineered, by using a conversion process that causes data loss. An interpreter, which the knowledge of its process method is kept restricted, is also provided. The interpreter interprets the general machine code into a specific machine code, while reconstructing the lost data during the interpretation process.Type: GrantFiled: March 30, 2006Date of Patent: January 8, 2013Assignee: Microsoft CorporationInventors: Keren Asipov, Boris Asipov
-
Publication number: 20120317557Abstract: 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.Type: ApplicationFiled: July 17, 2012Publication date: December 13, 2012Applicant: CONCURIX CORPORATIONInventor: Charles D. Garrett
-
Publication number: 20120317556Abstract: 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.Type: ApplicationFiled: June 13, 2011Publication date: December 13, 2012Applicant: Microsoft CorporationInventors: Weirong Zhu, Amit Kumar Agarwal, Lingli Zhang, Yosseff Levanoni
-
Patent number: 8332830Abstract: A method for communicating between at least one environment-independent application logic code (AL code) and at least one environment which is a combination of hardware and software. The method includes creating at least one interaction style code (IS code) that is specific to and communicates with the at least one environment, and is provided with an interaction style interface (IS interface) for interfacing an interaction style with said at least one application logic code (AL code). The interaction style interface (IS interface) is independent of and does not specify properties of said at least one environment, and the at least one environment-independent application logic code (AL code) runs unchanged in all environments. The at least one interaction style code (IS code) is operable with all of a graphical user interface, a non-graphical user interface, an HTML-based web browser user interface, and no user interface.Type: GrantFiled: February 7, 2006Date of Patent: December 11, 2012Inventors: Ellezer Kantorowitz, Alexander Lyakas
-
Patent number: 8327345Abstract: In response to receiving pre-processed code, a compiler identifies a code section that is not candidate for acceleration and identifying a code block specifying an iterated operation that is a candidate for acceleration. In response to identifying the code section, the compiler generates post-processed code containing one or more lower level instructions corresponding to the identified code section, and in response to identifying the code block, the compiler creates and outputs an operation data structure separate from the post-processed code that identifies the iterated operation. The compiler places a block computation command in the post-processed code that invokes processing of the operation data structure to perform the iterated operation and outputs the post-processed code.Type: GrantFiled: December 16, 2008Date of Patent: December 4, 2012Assignee: International Business Machines CorporationInventors: Ravi K. Arimilli, Balaram Sinharoy
-
Patent number: 8327316Abstract: The claimed subject matter provides a system and/or method that facilitates creating executable code for an industrial environment. A language editor can enable a programming of a portion of data within a programming language. A compiler can compile the portion of data within the programming language. An assembler component can utilize an intermediate language to convert the portion of data into a portion of assembly object code, wherein the assembly object code is target independent. A linker can create a binary file from the portion of assembly object code, wherein the binary file is target independent. A loader can specifically tailor the binary file to a target resource by leveraging at least one PLC definition, wherein the loader creates a target executable code (TEC) program at runtime or at development time.Type: GrantFiled: September 30, 2008Date of Patent: December 4, 2012Assignee: ICS Triplex Isagraf Inc.Inventors: Julien Chouinard, Gilles Brunet, Denis Lavallee, Chan-Dara Trang, Jean-Francois Laliberte, Frédéric Darveau, Olivier Larouche
-
Publication number: 20120304160Abstract: The present disclosure involves systems and computer-implemented methods for installing software hooks. One process includes identifying a target method and a hook code, where the hook code is to execute instead of at least a portion of the target method, and wherein the target method and the hook code are executed within a managed code environment. A compiled version of the target method and a compiled version of the hook code are located in memory, where the compiled versions of the target method and the hook code are compiled in native code. Then, the compiled version of the target method is modified to direct execution of at least a portion of the compiled version of the target method to the compiled version of the hook code. The non-compiled version of the target method may be originally stored as bytecode. The managed code environment may comprise a managed .NET environment.Type: ApplicationFiled: May 27, 2011Publication date: November 29, 2012Applicant: RIDGEWAY INTERNET SECURITY, LLCInventor: Derek A. Soeder