Just-in-time Compiling Or Dynamic Compiling (e.g., Compiling Java Bytecode On A Virtual Machine) Patents (Class 717/148)
  • Patent number: 7836434
    Abstract: Methods, systems, and articles of manufacture consistent with the present invention provide an improved technique for analyzing statements that use pointer or array syntax to access dynamically-allocated arrays to determine whether the statement generates a reference that is outside the bounds of the array's allocated memory. Statements that use pointer or array syntax to access dynamically-allocated arrays can be either statically (at compile-time) or dynamically bounds (at run-time) checked. Methods and systems in accordance with the present invention determine at compile-time if an array reference can be determined to always be in bounds or definitely out of bounds at least once, and if not, insert code into the program to check the array bounds dynamically at run-time before the access of the array reference.
    Type: Grant
    Filed: May 4, 2004
    Date of Patent: November 16, 2010
    Assignee: Oracle America, Inc.
    Inventor: Michael L. Boucher
  • Patent number: 7836438
    Abstract: A byte code modification method for a classfile is described. The classfile describes properties of a class within an object oriented environment. The byte code modification method entails modifying a classfile after the classfile has been compiled from source code. The modification of the classfile entails modifying a method information structure by adding byte code instructions to the byte code instructions of the method information structure's respective method. The added, byte code instructions cause a plug-in module's handler method to execute an output function for the method when it is executed during runtime. The modification of the classfile also entails adding a method information structure that includes byte code instructions for registering the identities of the class and the method with a dispatch unit.
    Type: Grant
    Filed: December 30, 2003
    Date of Patent: November 16, 2010
    Assignee: SAP AG
    Inventor: Nikolai G. Nikolov
  • Patent number: 7823153
    Abstract: A system, method, and computer-accessible medium for detecting and logging in-line synchronization primitives are disclosed. One or more in-line synchronization primitives in a computer program are programmatically detected during execution of the computer program. The one or more in-line synchronization primitives are stored in a log.
    Type: Grant
    Filed: September 30, 2005
    Date of Patent: October 26, 2010
    Assignee: Symantec Corporation
    Inventors: Serge Pashenkov, Serge Shats
  • Patent number: 7823137
    Abstract: A mechanism is provided for just-in-time instrumentation that uses bytecode insertion to modify a class definition to store a reference to the static class information to be used by probes. A hook is inserted to provide a callback to one or more probes. When the bytecode inserted hook is executed, the static class information is used to locate and execute the application probes.
    Type: Grant
    Filed: October 21, 2004
    Date of Patent: October 26, 2010
    Assignee: International Business Machines Corporation
    Inventors: Bryan Christopher Chagoly, Xiaoping Chen, Andrew Jason Lavery, Kirk Malcolm Sexton
  • Patent number: 7823140
    Abstract: A Java bytecode translation method and a Java interpreter performing the Java bytecode translation method are provided. The Java bytecode translation method includes extracting a number of successive Java bytecodes from a Java class, determining whether the extracted successive Java bytecodes are successive field access bytecodes for accessing a field in the Java class and translating the extracted successive Java bytecodes into predefined bytecode if the extracted successive Java bytecodes are determined to be the successive field access bytecodes, and executing the predefined bytecode.
    Type: Grant
    Filed: September 22, 2005
    Date of Patent: October 26, 2010
    Assignee: Samsung Electronics Co., Ltd.
    Inventor: Seung-bum Chung
  • Patent number: 7818730
    Abstract: The present invention provides a method and system for building an executable using only the necessary source modules or a reduced set of source modules. The complete list of necessary source modules can be determined by checking for dependency of any already identified necessary source modules. Hence, if any of the source modules belongs to a library, the entire library will not need to be compiled in order to use any necessary source module to build the executable. The present invention has the advantage that the executable takes shorter time to build and the executable is smaller in memory size so that it is easier to be ported to a target system. The present invention may also be used to minimize or reduce the memory needed to load a model so that only the elements/blocks that are used in the model are loaded into memory when a model loads.
    Type: Grant
    Filed: June 30, 2006
    Date of Patent: October 19, 2010
    Assignee: The Math Works, Inc.
    Inventors: Anthony Robert Ryan, James Carrick
  • Patent number: 7810077
    Abstract: In accordance with one embodiment of the present invention, there is provided a technique for reifying generic types while maintaining migration compatibility. According to this technique, the actual type parameters that should be associated with a raw type, but which are not expressed in a binary file, are dynamically inferred at run time. The actual type parameters are inferred based on the run time usage of an object that is an instance of the raw type.
    Type: Grant
    Filed: April 18, 2005
    Date of Patent: October 5, 2010
    Assignee: Oracle America Inc.
    Inventor: Gilad Bracha
  • Patent number: 7805708
    Abstract: This invention simulates program to create a conflict graph of the cache accesses. The conflict graph is used to relay out relocatable functions to minimize cache conflict misses where conflicting functions map to the same portion of the cache. The conflict graph includes a vertex for each function and an edge between functions having a weight corresponding to a conflict amount. This conflict graph enables a layout of functions to minimize the number of conflicting items that map to the same location in the cache weighted by the degree of conflict encoded by the edges in the graph.
    Type: Grant
    Filed: May 11, 2006
    Date of Patent: September 28, 2010
    Assignee: Texas Instruments Incorporated
    Inventor: Tor E. Jeremiassen
  • Publication number: 20100235820
    Abstract: A media interaction system is described herein that allows hosted applications to consume and/or produce rich media content independent of the format of the media content, while still maintaining the security of the host. The media interaction system accepts raw, uncompressed media data from a hosted application, and allows the hosted application to provide its own codec through a sandboxed API that restricts the actions the codec can perform to a set of trusted actions. Then, the application provides the uncompressed data to the system for playback. Thus, the media interaction system provides rich media content in any format that the application developer supports, and maintains the security of the user's computer system.
    Type: Application
    Filed: March 16, 2009
    Publication date: September 16, 2010
    Applicant: MICROSOFT CORPORATION
    Inventors: Gilles Khouzam, Sam J. George, Brian J. Ewanchuk, Lawrence W. Olson, Michael R. Harsh
  • Patent number: 7793275
    Abstract: Methods and apparatus are disclosed to tune intermediate representations in a managed runtime environment. An example method disclosed herein receives a bytecode at a virtual machine during runtime, determines a method of the received bytecode, identifies an optimized intermediate representation associated with the method, and imports the optimized intermediate representation from the memory into the virtual machine. Other embodiments are described and claimed.
    Type: Grant
    Filed: March 31, 2006
    Date of Patent: September 7, 2010
    Assignee: Intel Corporation
    Inventors: Konstantin Stanislavovich Bobrovsky, Vyacheslav Pavlovich Shakin, Ali-Reza Adl-Tabatabai
  • Publication number: 20100218174
    Abstract: A compiler is loaded by a computing device using an evaluation function that is included in a program in a compiled form. The evaluation function causes the compiler to compile source code for the program, wherein the source code includes new instructions that are uncompiled, and wherein compiling the source code generates compiled code that includes the new instructions. The evaluation function loads the compiled code into memory, retrieves the new instructions, and executes the new instructions. The evaluation function may perform these operations during runtime of the program that includes the evaluation function.
    Type: Application
    Filed: February 26, 2009
    Publication date: August 26, 2010
    Inventor: James P. Schneider
  • Patent number: 7784041
    Abstract: A method is disclosed for reducing dynamic pauses during dynamic compilation. Applications running on a system detect the rendering of dynamic output to a user. The dynamic output represents a change in visual or audio data while any application is running. When an application detects such output it notifies the system, which monitors the frequency of the dynamic output. If the frequency of the dynamic output exceeds a threshold, the system informs a compiler on the system to suspend compilation. Compilation normally occurs when an interpreter on the system is instructed to pass processing control to the compiler. One way this occurs is if a method currently being processed by the interpreter has been marked for compilation. Thus, in order to suspend compilation, the compiler ceases to mark methods for compilation so that the interpreter will not be instructed to pass processing control to the compiler.
    Type: Grant
    Filed: March 30, 2006
    Date of Patent: August 24, 2010
    Assignee: Oracle America, Inc.
    Inventors: Ioi K. Lam, Oleg A. Pliss
  • Publication number: 20100211638
    Abstract: The invention relates to a method for creating computer applications, including the following steps: receipt of a message that has a content; determination of a computer application type that can be associated with said content; and parameterisation of a generic application of the pre-determined application type with the content in order to form the computer application. In particular embodiments of the invention, during the step comprising the determination of a computer application type, the computer application type depends on: the identity of the message sender, at least one message attachment and/or key words contained in the content of the message.
    Type: Application
    Filed: July 25, 2008
    Publication date: August 19, 2010
    Applicant: GOOJET
    Inventor: Marc Rougier
  • Patent number: 7779389
    Abstract: A deployable template structure is described. In an embodiment, the deployable template structure includes sections for virtual machines deployable, filters, and component configuration settings. Parameters for the virtual machine section are broken down into three groups: memory, system, and additional.
    Type: Grant
    Filed: December 30, 2005
    Date of Patent: August 17, 2010
    Assignee: SAP AG
    Inventors: Mladen L. Markov, Krasimir P. Semerdzhiev, Ingo Zenz
  • Patent number: 7779085
    Abstract: A remote wireless device registers with a server. Responsively, the server determines the identity of a server-side application associated with a user of the remote wireless device. The server may then generate an application definition file specific to the server-side application and to the remote wireless device. The application definition file may contain definitions for: a user interface format; a format for network messages; and a format for storing data. Using these definitions, the wireless device may receive data generated by the server-side application and formatted in accordance with the definitions. The wireless device may then present a user interface for the server-side application. The application definition file may be an Extensible Markup Language (XML) file. Advantageously, configuration of devices is more efficiently accomplished.
    Type: Grant
    Filed: July 17, 2006
    Date of Patent: August 17, 2010
    Assignee: Research In Motion Limited
    Inventors: Tim Neil, Steve Grenier, Scott Neil
  • Publication number: 20100192137
    Abstract: A computer readable storage medium is provided having executable instructions stored thereon for executing a method of operating a computing system, in which an inner virtual machine translates first instructions, which are supported by the inner virtual machine, into second instructions, which are supported by an outer virtual machine. The method includes encoding, in the inner virtual machine, third instructions into the second instructions into which the first instructions are translated, the third instructions including hints for facilitating an execution of the second instructions, and, in an event the hints are supported by the outer virtual machine, initiating the execution of the second instructions while utilizing the hints by the outer virtual machine to achieve an increased efficiency of the execution of the second instructions.
    Type: Application
    Filed: January 23, 2009
    Publication date: July 29, 2010
    Applicant: INTERNATIONAL BUSINESS MACHINES CORPORATION
    Inventors: Derek B. Inglis, Marcel Mitran, Ali I. Sheikh, Kevin A. Stoodley
  • Patent number: 7765530
    Abstract: A system, method and media for a method for resolving dependencies given a first package and a first type, comprising determining one or more anti-dependencies for the first package; and compiling a first one of the anti-dependencies if at least one of the following is true: 1) the first anti-dependency has a compilation error; and 2) the first anti-dependency depends on a second package wherein the second package that has a second type with the same name as the first type. This abstract is not intended to be a complete description of, or limit the scope of, the invention. Other features, aspects and objects of the invention can be obtained from a review of the specification, the figures and the claims.
    Type: Grant
    Filed: July 26, 2006
    Date of Patent: July 27, 2010
    Assignee: BEA Systems, Inc.
    Inventors: Jesse Michael Garms, Timothy A. Wagner
  • Patent number: 7761859
    Abstract: One embodiment of the invention comprises a system and method for aiding a user in specifying function parameter values in a computer program. An application development environment (ADE) may be operable to display parameter assistant user interfaces for aiding the user in specifying various function parameter values. Another embodiment of the invention comprises a system and method for automatically declaring variables passed as parameters in function calls.
    Type: Grant
    Filed: December 3, 2004
    Date of Patent: July 20, 2010
    Assignee: National Instruments Corporation
    Inventor: Jared L. Low
  • Patent number: 7761861
    Abstract: In some embodiments of the present invention, files are generated from java files or class files or jar files. The generated files are directly linkable and interpretable by a Java Virtual Machine. The generated files may be stored in a directly addressable memory of a device. References between class files may appear in the generated files as hard offsets or symbolic references. The generated files may be grouped so that cross-references between generated files in the same group appear as hard offsets.
    Type: Grant
    Filed: November 29, 2002
    Date of Patent: July 20, 2010
    Assignee: Research in Motion Limited
    Inventors: Gregory R. Bentz, John F. A. Dahms, David P. Yach
  • Patent number: 7752635
    Abstract: A system includes an interface device that executes a driver and a processing device that executes instructions to implement a virtual machine, and to implement a virtual network interface card that is configurable to enable communication between the driver and the virtual machine. The processor executes instructions to configure the virtual network interface card.
    Type: Grant
    Filed: December 18, 2003
    Date of Patent: July 6, 2010
    Assignee: Intel Corporation
    Inventor: Saul Lewites
  • Patent number: 7752610
    Abstract: Systems, methods, and computer-readable media supporting thread abstraction in Java are provided. In some illustrative embodiments, a system is provided that includes a Java execution flow class that represents an execution flow context, an execution flow scheduler object including a Java native execution flow activation method, a Java virtual machine, a Java scheduler that executes on the Java virtual machine, and a Java thread class that extends the execution flow class. The execution flow class includes an execution flow execution method and a constructor that creates an execution flow context. The Java thread class includes an execution flow execution method that overrides the execution flow execution method of the execution flow class.
    Type: Grant
    Filed: July 26, 2005
    Date of Patent: July 6, 2010
    Assignee: Texas Instruments Incorporated
    Inventors: Gilbert Cabillic, Jean-Philippe Lesot
  • Patent number: 7747989
    Abstract: A system includes an abstract machine instruction stream, an execution trace buffer storing information to facilitate dynamic compilation, a virtual machine coprocessor configured to receive an instruction from the abstract machine instruction stream and to generate one or more native machine instructions in response to the received instruction, and a processor coupled to the virtual machine coprocessor and operable to execute the native machine instructions generated by the virtual machine coprocessor. The virtual machine coprocessor updates the execution trace buffer as instructions from the abstract machine instruction stream are processed. In addition, a method for facilitating dynamic compilation includes receiving an instruction to be processed, determining that the instruction marks entry into a basic block, and updating an execution trace buffer.
    Type: Grant
    Filed: August 8, 2003
    Date of Patent: June 29, 2010
    Assignee: MIPS Technologies, Inc.
    Inventor: Kevin D. Kissell
  • Patent number: 7743367
    Abstract: A method is described that comprises receiving from a classfile registration information. The registration information comprises a class name and a different method name for each of the class's methods. Each of the methods are modified with at least one additional byte code instruction to cause, for its respective method, a plug-in module's handler method to provide output function treatment for the respective method. Also, a plug-in pattern is referred to in order to determine which of a plurality of plug-in modules are appropriate for each of the class's methods. The plug-in pattern lists for each of the plug-in modules those of the methods that are to be handled with its corresponding output function treatment.
    Type: Grant
    Filed: December 30, 2003
    Date of Patent: June 22, 2010
    Assignee: SAP AG
    Inventors: Nikolai G. Nikolov, Mario Kabadiyski
  • Patent number: 7739674
    Abstract: In one embodiment of the present invention an interpreted language, such as, for example, Java, is selectively optimized by partitioning the interpreted language code (98) into a plurality of blocks (80-83) based on the complexity of each of the interpreted language instructions. In one embodiment of the present invention, each of the plurality of blocks is identified as either a block to be compiled into native code (80-82) if the block is simple, or a block to be interpreted (83) if the block is complex. The compiled and interpreted blocks are appended to form in-line mixed code (99) that contains both native code (90-92) and interpreted language code (93). This mixed code is formed before run-time, so that no further compilation is required at run-time. A processing unit (102) may be used to execute the native code directly without the use of a Java VM (10), while also executing, in-line, the interpreted language code (93) which requires use of the Java VM (10) to interpret the Java bytecodes.
    Type: Grant
    Filed: June 29, 2004
    Date of Patent: June 15, 2010
    Assignee: Freescale Semiconductor, Inc.
    Inventors: Howard Dewey Owens, Viatcheslav Alexeyevich Kirillin, Mikhail Andreevich Kutuzov, Dmitry Sergeevich Preobrazhensky
  • Publication number: 20100138817
    Abstract: Modifying computer program code can be performed at or immediately prior to runtime of the computer code in a runtime environment of a common language infrastructure of a language-neutral framework for developing and executing computer applications. A function in a computer program can be modified at runtime by injecting arbitrary code, while mitigating an alteration of a program's call stack. A just-in-time compilation service is used to compile and execute intermediate language code of the program, and the runtime environment sends callback functions to an event-based profiling agent (profiler) attached to the runtime environment. The profiler can trap desired functions, as determined by configuration data, and inject modification code from stub methods in a stub assembly file. The modified code can be sent back to the runtime environment to be executed by the just-in-time compilation service.
    Type: Application
    Filed: December 1, 2008
    Publication date: June 3, 2010
    Applicant: Microsoft Corporation
    Inventors: Leonid Dubinsky, Jean-Francois Peyroux
  • Patent number: 7730468
    Abstract: A system and method is provided for generating and executing specialized code executables. The system includes a virtual subsystem that processes a generic code image and logs information relating to an operating environment of the virtual subsystem. The logged information is employed as feedback to generate a specialized native executable, wherein the specialized native executable is utilized to provide improved performance of the virtual subsystem. The specialized native executable is selected for execution by the virtual subsystem by matching a current operating environment setting with the logged information.
    Type: Grant
    Filed: March 26, 2001
    Date of Patent: June 1, 2010
    Inventor: Sean E. Trowbridge
  • Patent number: 7730464
    Abstract: The contents of a cache of specialized code interpreted into an intermediate language may be recompiled for execution in a managed execution environment in accordance with an automated process in such a manner to minimize any impact on machine resources.
    Type: Grant
    Filed: September 14, 2005
    Date of Patent: June 1, 2010
    Assignee: Microsoft Corporation
    Inventor: Sean E. Trowbridge
  • Patent number: 7725883
    Abstract: A method and system is provided that allows a well-behaved program to execute more quickly than dynamically typed programming languages did in the past, thereby allowing a the dynamically typed language to be competitive with static declarative programming languages. A method includes converting lines of source code representing functions to byte-codes representing functions, selecting a subsequence of the byte-codes based on the byte-codes and the dynamic run-time properties of program variables, generating processor instructions in a compiler for the subsequence, and interpreting the byte-codes not contained in the subsequence.
    Type: Grant
    Filed: December 5, 2005
    Date of Patent: May 25, 2010
    Assignee: The MathWorks, Inc.
    Inventors: Charles G. Nylander, William M. McKeeman, Brett Baker, William Nell
  • Patent number: 7725885
    Abstract: The present invention relates to a mechanism for adaptive run time compilation of traces of program code to achieve efficiency in compilation and overall execution. The mechanism uses a combination of interpretation and compilation in executing byte code. The mechanism selects code segments for compilation based upon frequency of execution and ease of compilation. The inventive mechanism is able to compile small code segments, which can be a subset of a method or subroutine, and comprising only single path execution. The mechanism thereby achieves efficiency in compilation by having less total code as well as having only straight line, or single path execution, code to compile.
    Type: Grant
    Filed: May 9, 2000
    Date of Patent: May 25, 2010
    Assignee: Hewlett-Packard Development Company, L.P.
    Inventors: Salil Pradhan, Lacky Shah
  • Patent number: 7721276
    Abstract: Under the present invention, source input corresponding to a first release of Java byte code and target input corresponding to a second release of the Java byte code is received. The input is transformed into a first list containing class names associated with the first release and a second list containing class names associated with the second release. Thereafter, any classes corresponding to class names that appear on both lists (e.g., matching class names) are loaded. The methods within the matching classes are then compared to determine if any of the APIs have been modified between the two releases. After the comparison, the matching class names are removed from the lists. Any class names remaining on the first list represent APIs that have been removed from the second release, while any class names remaining on the second list represent APIs that have been added for the second release.
    Type: Grant
    Filed: February 20, 2004
    Date of Patent: May 18, 2010
    Assignee: International Business Machines Corporation
    Inventor: Fuhwei Lwo
  • Publication number: 20100122242
    Abstract: A system and method are disclosed for improving the performance of compiled Java code. A native code management module determines the available processor resources associated with a target information processing system, their respective instruction set architecture (ISA), and possible native code compilation optimization processes. The native code management module then generates compiler parameter permutations, which are iteratively provided to a just-in-time (JIT) compiler. Each compiler parameter permutation is used by JIT compiler to generate a native code compilation iteration. Each of the resulting native code compilation iterations are executed by the JVM and their respective performance is measured to determine the best performing native code compilation iteration.
    Type: Application
    Filed: November 7, 2008
    Publication date: May 13, 2010
    Inventor: Azeem S. Jiva
  • Patent number: 7716654
    Abstract: Techniques for simulation of multi top-level graphical-containers (e.g., frames) in an object-oriented computing environment are disclosed. A Multi Top-level Graphical-Container Simulator (MTGS) can be provided to simulate multi top-level graphical container support for applications that expect to use a plurality of top-level graphical containers (e.g., frames, windows). A MTGS may be implemented as a layer between a GUI-based application and an operating system and/or hardware/device with limited or virtually no graphical support capability. The Multi Top-level Graphical Simulator (MTGS) can effectively isolate the operating systems and/or hardware/device from the GUI-based application, and yet hide this simulation from the operating system and/or hardware/device. MTGS may be implemented in a platform independent programming language (e.g., Java™ programming language using a set of Java™ classes which have been provided in the Java™ Swing development toolkit.
    Type: Grant
    Filed: June 18, 2004
    Date of Patent: May 11, 2010
    Assignee: Oracle America, Inc.
    Inventors: Michael Fleming, Saito Chihiro, Jonathan D. Courtney, Bartley H. Calder
  • Patent number: 7716656
    Abstract: Systems and methods that enhance a programming language by introducing null unification on a type level in addition to a value level, for static types of both reference and value types T. An operator that adds a level of nullability (and removes such nullability) is introduced without a mention of the actual type, to steer overloading in a precise manner.
    Type: Grant
    Filed: August 30, 2005
    Date of Patent: May 11, 2010
    Assignee: Microsoft Corporation
    Inventors: Henricus Johannes Maria Meijer, Amanda Silver, Brian C. Beckman, Paul A. Vick, Avner Y. Aharoni, David N. Schach, Peter F. Drayton
  • Publication number: 20100115501
    Abstract: A method of performing distributed just-in-time compilation includes sending a first request message from a client platform to a dedicated compilation server requesting just-in-time compilation of a bytecode sequence generated from a set of code for a source program executing on the client platform; compiling the bytecode sequence at the compilation server into a set of machine code instructions executable by the client platform; storing the set of machine code instructions in a repository managed by the dedicated compilation server; sending a notification message indicating that the set of machine code instructions are available from the dedicated compilation server to the client platform; sending a second request message from the client platform to the dedicated compilation server requesting the set of machine code instructions; and accessing the repository to send the set of machine code instructions from the dedicated compilation server to the client platform.
    Type: Application
    Filed: October 30, 2008
    Publication date: May 6, 2010
    Applicant: International Business Machines Corporation
    Inventors: Ian O. Partridge, Adam J. Pilkington, David S. Renshaw, Simon Charles Edward Rowland
  • Publication number: 20100115502
    Abstract: A system and method are disclosed for improving the performance of compiled Java code. Java source code is annotated and then compiled by a Java compiler to produce annotated Java bytecode, which in turn is compiled by a just-in-time (JIT) compiler into annotated native code. The execution of the annotated native code is monitored with a patching agent, which captures the annotated native code as it is being executed. The captured native code is then provided through an application program interface to a dynamic linkage module, which in turn provides the captured native code to a user or to an application plug-in module for modifications. The modifications are saved as a patch. The annotated native code is then re-executed and the modifications to the annotated native code are applied as a patch by the patching agent.
    Type: Application
    Filed: November 6, 2008
    Publication date: May 6, 2010
    Inventors: Azeem S. Jiva, Gary R. Frost
  • Patent number: 7707565
    Abstract: A computer system and computer program product executing a method for consistent and efficient management of program configuration and customizing data for a business application program. According to one method, an existing or newly created version of a global switch configuration is provided in a cache shared by one or more other programs. The cached switch configuration provides a configuration for a switch framework that governs access to one or more program functions of a business application. The cached switch configuration is then attached to the business application to provide an attached version of the switch configuration. Compatibility between the attached version of the switch configuration and the business application is determined. If compatibility exists, the business application program is executed in accordance with the attached version of the switch configuration.
    Type: Grant
    Filed: July 1, 2005
    Date of Patent: April 27, 2010
    Assignee: SAP Aktiengesellschaft
    Inventors: Frank Bertelsmeier, Andreas Simon Schmitt, Helmut Prestel
  • Patent number: 7707562
    Abstract: The present invention translation verification system and method verifies code fragment translations and/or optimizations that are bounded by externally observable information.
    Type: Grant
    Filed: March 31, 2005
    Date of Patent: April 27, 2010
    Inventor: Markus Kaltenbach
  • Patent number: 7707566
    Abstract: A software development architecture is provided for constructing a wide range of software development tools. A software development tool can be created by integrating a specification specifying functionality specific to a set of software development scenarios into a software development scenario-independent framework. The integrated specification can then be compiled to create the software development tool. Alternatively, integration can be achieved at runtime without access to source code. The architecture can use any combination of the following: a software scenario independent intermediate representation format, one or more exception handling models capable of supporting a plurality of programming language specific exception handling models, a type system capable of representing the type representations of a plurality of source languages, and a code generator capable of generating code targeted for a plurality of execution architectures.
    Type: Grant
    Filed: July 25, 2003
    Date of Patent: April 27, 2010
    Assignee: Microsoft Corporation
    Inventors: Vinod K. Grover, Charles L. Mitchell, David Mitford Gillies, Mark Leslie Roberts, Mark Ronald Plesko, David Read Tarditi, Jr., Andrew James Edwards, Julian Burger, Andrew Edward Ayers, Akella V. S. Sastry
  • Patent number: 7703088
    Abstract: Selected regions of native instructions translated in a DBT environment from non-native instructions are compressed based on the independent compression of different fields of selected instructions using compression tables to reduce a length of selected fields. The regions of compressed instructions are stored and de-compressed into the native instructions during subsequent execution using de-compression tables. Specifically, for native instructions of a selected region, selected types of opcodes and/or operands may be compressed independently. The types may be selected by profiling the opcodes using benchmark programs and creating an opcode conversion table prior to compression, and scanning of the operands and creating an operand conversion table during compression of the opcodes.
    Type: Grant
    Filed: September 30, 2005
    Date of Patent: April 20, 2010
    Assignee: Intel Corporation
    Inventors: Zhiyuan Li, Youfeng Wu
  • Publication number: 20100095284
    Abstract: A program entity that generates code but that does not perturb global state is identified. Code produced by the identified program entity can be assigned an identifier and cached the first time it is executed. Subsequent executions of the program entity can eliminate generation of the code and/or translation of the generated code into native binary code. The runtime generated code and native binary code can be cached in a machine-wide cache, or can be added to the metadata of the assembly generated from the source code of the program entity.
    Type: Application
    Filed: October 15, 2008
    Publication date: April 15, 2010
    Applicant: Microsoft Corporation
    Inventors: Nathan Herring, David C. Wrighton
  • Patent number: 7685574
    Abstract: Authored code may include a notification that no tolerance for failure or corruption is expected for an identified sub-set of the code. Any potential failure point, which may be induced by a runtime environment routine or sub-routine, that is associated with the identified sub-set of code may then be identified and hoisted to a point apart from the identified sub-set of code.
    Type: Grant
    Filed: September 29, 2004
    Date of Patent: March 23, 2010
    Assignee: Microsoft Corporation
    Inventors: Christopher W Brumme, Sean E Trowbridge, Rudi Martin, WeiWen Liu, Brian M. Grunkemeyer, Mahesh Prakriya
  • Publication number: 20100070957
    Abstract: The techniques and mechanisms described herein are directed at sharing objects between applications executing in a virtual runtime environment. The techniques include compiling a cpu-independent file to create executable instructions that are associated with an application that is executable in a virtual runtime environment. A constructor associated with a shareable class defined within the cpu-independent file is executed to create an instance of a shareable object. The shareable object is then persisted in a manner such that other applications executing in the virtual runtime environment may access the shareable object. The technique may be performed during pre-JIT compilation or just-in-time compilation of the cpu-independent file. The execution of the constructor is performed at a restricted security level that prevents access to changeable information when generating static data for the static members of the shareable object.
    Type: Application
    Filed: November 20, 2009
    Publication date: March 18, 2010
    Applicant: MICROSOFT CORPORATION
    Inventors: Rico Mariani, Christopher W. Brumme, Patrick H. Dussud, Sean E. Trowbridge
  • Patent number: 7681019
    Abstract: Reference architecture instructions are translated into target architecture operations. In some embodiments, an execution unit of a processor executes a function determined from a collection of operations, the function specifying functionality based on instructions, the collection selected from operations translated from the instructions. In further embodiments, the function is specified as a fused operation. Sequences of operations are optimized by fusing collections of operations; fused operations specify a same observable function as respective collections, but advantageously enable more efficient processing. In some embodiments, a collection comprises multiple register operations. Sequences of operations, in a predicted execution order in some embodiments, form traces. In some embodiments, fusing operations requires setting only final architectural state, such as final flag state; intermediate architectural state is used implicitly in a fused operation.
    Type: Grant
    Filed: November 17, 2006
    Date of Patent: March 16, 2010
    Assignee: Sun Microsystems, Inc.
    Inventor: John Gregory Favor
  • Patent number: 7669191
    Abstract: Implementing a type-safe heterogeneous containers in a memory arrangement of a computing system. In one embodiment, a main object of a class is specified in program source code. The class has a variant type, and the variant type provides at least two different data types, at least one of which is a linear array of objects of one of the data types. The class includes methods for putting and getting a variant object of the variant type in and from the main object. An application of a visitor method, which includes a respective operator for each of the different data types, is specified in the program source code for each method for getting a variant object from the main object. Compilation of the source code results in code that executes the one of the operators corresponding to the data type of a referenced variant object of the main object.
    Type: Grant
    Filed: June 14, 2005
    Date of Patent: February 23, 2010
    Assignee: Xilinx, Inc.
    Inventors: Sean A. Kelly, Roger B. Milne, Alexander R. Vogenthaler
  • Patent number: 7669020
    Abstract: A system, method, and computer-accessible medium for centralized backup of a plurality of virtual machines are disclosed. Each virtual machine comprises at least one virtual volume. The plurality of virtual volumes are accessed through a central computer system. The central computer system is used to backup data from the plurality of virtual volumes in a manner substantially independent of execution of the plurality of virtual machines.
    Type: Grant
    Filed: May 2, 2005
    Date of Patent: February 23, 2010
    Assignee: Symantec Operating Corporation
    Inventors: Sunil Shah, Robert P. Rossi
  • Patent number: 7669201
    Abstract: The invention provides a method and system for creating a single, common installation file for multiple target device types. In one approach, the method comprises providing a base engine, compiling the engine into an intermediate language code, and just-in-time compiling the intermediate code into executable code. The latter code is executed to gather the appropriate data sets and concatenate the data sets with the engine to form the installation file. The present invention also provides a method and system for utilizing the installation file to retrieve the appropriate data set(s) for the identified target device type, and to install the retrieved data set(s) onto the target device.
    Type: Grant
    Filed: May 2, 2005
    Date of Patent: February 23, 2010
    Assignee: Intermec IP Corp.
    Inventor: James Edward Seely
  • Patent number: 7665077
    Abstract: The techniques and mechanisms described herein are directed at sharing objects between applications executing in a virtual runtime environment. The techniques include compiling a cpu-independent file to create executable instructions that are associated with an application that is executable in a virtual runtime environment. A constructor associated with a shareable class defined within the cpu-independent file is executed to create an instance of a shareable object. The shareable object is then persisted in a manner such that other applications executing in the virtual runtime environment may access the shareable object. The technique may be performed during pre-JIT compilation or just-in-time compilation of the cpu-independent file. The execution of the constructor is performed at a restricted security level that prevents access to changeable information when generating static data for the static members of the shareable object.
    Type: Grant
    Filed: October 18, 2004
    Date of Patent: February 16, 2010
    Assignee: Microsoft Corporation
    Inventors: Rico Mariani, Christopher W. Brumme, Patrick H. Dussud, Sean E. Trowbridge
  • Patent number: 7665079
    Abstract: It is one object of the present invention to provide a program execution method for performing greater optimization. A program execution apparatus according to the present invention performs a transfer from an interpreter process to a compiled code process in the course of the execution of a method. At this time, if no problem occurs when a transfer point is moved to the top of a loop, the transfer point for code is so moved. And when a transfer point is located inside a loop, a point that post-dominates the top of the loop and the transfer point is copied to a position immediately preceding the loop. Then, information for generating recalculation code is provided for the transfer point, and a recalculation is performed.
    Type: Grant
    Filed: November 8, 2000
    Date of Patent: February 16, 2010
    Assignee: International Business Machines Corporation
    Inventors: Toshiaki Yasue, Kazunori Ogata, Kazuaki Ishizaki, Hideaki Komatsu
  • Patent number: 7665075
    Abstract: A method for sharing dynamically compiled code between different class loaders is provided. In this method, loader-reentrant compiled code is produced from bytecodes by generating native code implementing a class initialization barrier when compiling bytecodes that require a class to be initialized, by generating native code implementing a link resolution barrier when compiling bytecodes that require a symbolic link to be resolved, and by generating code to retrieve loader-dependent data from a loader-dependent table when compiling bytecodes that use data computed from a resolved symbolic link.
    Type: Grant
    Filed: May 18, 2004
    Date of Patent: February 16, 2010
    Assignee: Sun Microsystems, Inc.
    Inventors: Laurent Daynes, Grzegorz Czajkowski
  • Patent number: 7665076
    Abstract: Provided is a JIT compiler that changes the status of run-time determined software routines between being activated and deactivated in an application program. Conditional statements which are used at run-time to determine whether such a routine has been activated or deactivated are presented as discrete conditions that always evaluate to a known result by using an invariant flag in the compiled bytecode. The JIT compiler optimises an application program by excluding discrete condition checks. Consequently, if the branch of the discrete condition that will never execute includes a run-time determined software routine, then the routine will be excluded from the JIT compilation and will not form part of the JIT compiled native machine code. A run-time class or code replacement facility is used as a means of activating or deactivating a run-time determined software routine at run-time by changing the value of the invariant flag of said routine.
    Type: Grant
    Filed: June 3, 2004
    Date of Patent: February 16, 2010
    Assignee: International Business Machines Corporation
    Inventors: Andrew S. Clement, Matthew A. Webster