Just-in-time Compiling Or Dynamic Compiling (e.g., Compiling Java Bytecode On A Virtual Machine) Patents (Class 717/148)
  • Publication number: 20120167067
    Abstract: A batching mechanism is provided that batches multiple Java Native Interface calls together such that the batch crosses the Java Native Interface boundary in a single transition. The batching mechanism operates by identifying a sequence of Java Native Interface calls to be made by native code, by encapsulating the identified sequence of Java Native Interface calls into a batch, and by communicating the batch as a single transition across the Java Native Interface boundary. In this manner, each call of the batch is encapsulated by iteratively performing for each call to be made, processes including identifying the Java Native Interface function to call, identifying the arguments to pass into the Java Native Interface function, dispatching to the Java Native Interface function and capturing the return value.
    Type: Application
    Filed: December 23, 2010
    Publication date: June 28, 2012
    Applicant: INTERNATIONAL BUSINESS MACHINES CORPORATION
    Inventors: Andrew R. Low, Marcel Mitran, Kishor V. Patil, Gavin Rolleston, Ivan Sham, Karl M. Taylor
  • Publication number: 20120159464
    Abstract: 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: Application
    Filed: February 27, 2012
    Publication date: June 21, 2012
    Inventors: Christopher G. Demetriou, Matthew N. Papakipos
  • Patent number: 8205193
    Abstract: The invention relates to a computer-implemented method of updating a virtual machine class file, including the steps of identifying a class file for execution by a virtual machine, accessing the class file in a class file repository, and downloading the class file to a file system associated with the virtual machine.
    Type: Grant
    Filed: June 11, 2001
    Date of Patent: June 19, 2012
    Assignee: Hewlett-Packard Development Company, L.P.
    Inventors: William Hertling, Michael D Whitmarsh
  • Publication number: 20120151458
    Abstract: A system and method for removal of array copies in Java by reusing a source array for the target array and potentially cutting the length of the source array. In accordance with an embodiment, the system comprises physical computers or similar computing devices; a computing or virtual execution environment; a virtual machine that includes a compiler and memory spaces for Java application bytecode and storage for generated machine code; and wherein the compiler performs a static analysis of the code wherever any array copy is found, and determines if the array copy can be replaced with a reuse of the source array as the target array, potentially followed by a cut operation, and if so modifies the generated machine code accordingly.
    Type: Application
    Filed: December 8, 2010
    Publication date: June 14, 2012
    Applicant: ORACLE INTERNATIONAL CORPORATION
    Inventor: Fredrik Öhrstrõm
  • Patent number: 8201171
    Abstract: Various technologies and techniques are disclosed for handling data parallel operations. Data parallel operations are composed together to create a more complex data parallel operation. A fusion plan process is performed on a particular complex operation dynamically at runtime. As part of the fusion plan process, an analysis is performed of a structure of the complex operation and input data. One particular algorithm that best preserves parallelism is chosen from multiple algorithms. The structure of the complex operation is revised based on the particular algorithm chosen. A nested complex operation can also be fused, by inlining its contents into an outer complex operation so that parallelism is preserved across nested operation boundaries.
    Type: Grant
    Filed: June 27, 2007
    Date of Patent: June 12, 2012
    Assignee: Microsoft Corporation
    Inventors: John Joseph Duffy, David Callahan
  • Patent number: 8201026
    Abstract: The present disclosure relates to techniques for potentially increasing the reliability and/or stability of systems having virtual machines that support multiple modes of execution. For example, as described herein, a virtual machine partitions a plurality of program instructions into a plurality of traces for execution by a virtual machine operating on a computing device, wherein the virtual machine has first and second modes of execution, and wherein each of the plurality of traces comprises one or more of the plurality of program instructions. The virtual machine applies the second mode of execution to a first trace in the plurality of traces and determines an error condition that is caused by the application of the second mode of execution to the first trace. After determining the error condition, the virtual machine applies the first mode of execution to the first trace to recover the virtual machine from the error condition.
    Type: Grant
    Filed: September 30, 2011
    Date of Patent: June 12, 2012
    Assignee: Google Inc.
    Inventors: Daniel R. Bornstein, Ben C. Cheng, William B. Buzbee
  • Publication number: 20120144377
    Abstract: A computer implemented method, apparatus, and computer program product for managing just-in-time compilation. The process designates a set of compilation threads for exclusively performing compilation functions associated with an application. A set of computation threads is designated for executing the application. Processor cycles are dynamically allocated during runtime between the set of compilation threads and the set of computation threads to maintain a ratio of processor cycles consumed by the set of compilation threads to processor cycles consumed by the set of computation threads.
    Type: Application
    Filed: February 6, 2012
    Publication date: June 7, 2012
    Applicant: INTERNATIONAL BUSINESS MACHINES CORPORATION
    Inventor: Marius Pirvu
  • Publication number: 20120131562
    Abstract: A method and apparatus for upgrading a virtual machine in a portable terminal are provided in which an external class file different from a class file defined on a virtual machine for execution of a Java MIDlet is received and stored, then the external class file is dynamically loaded by a class loader when the Java MIDlet is executed. During operation, it is determined whether the external class file is applicable to the virtual machine by analyzing setting information of the external class file, and if so, the external class file is applied to the virtual machine.
    Type: Application
    Filed: November 22, 2011
    Publication date: May 24, 2012
    Applicant: SAMSUNG ELECTRONICS CO., LTD.
    Inventor: Hyeon-Ho KIM
  • Patent number: 8181166
    Abstract: A system for determining when an EJB compiler needs to be executed, comprising: a server, including an EJB or plurality of EJBs and an EJB compiler operating thereon that determines a first snapshot of the EJB at a particular moment in time or for a particular server version, and a second snapshot of said EJB at a later moment in time or a subsequent server version, and compares the first and second snapshots to determine whether the EJB should be recompiled.
    Type: Grant
    Filed: October 29, 2007
    Date of Patent: May 15, 2012
    Assignee: Oracle International Corporation
    Inventors: Matthew Shinn, Seth White, Rob Woollen
  • Publication number: 20120117550
    Abstract: The invention in particular relates to provide security for intermediate programming code for its execution by a virtual machine. After having received (200) a plurality of pseudo-instructions of the intermediate programming code, the plurality of bytecode instructions is converted (230, 235), the conversion including a step of inserting at least one bytecode instruction relative to a function for execution checking of at least one bytecode instruction of the plurality of bytecode instructions. A following step is directed to generating bytecode, the generated bytecode including the plurality of converted bytecode instructions.
    Type: Application
    Filed: November 9, 2011
    Publication date: May 10, 2012
    Applicant: OBERTHUR TECHNOLOGIES
    Inventors: Olivier CHAMLEY, Hugo GRENECHE
  • Patent number: 8171482
    Abstract: Systems and methods of executing an application in an application specific runtime environment are disclosed. The application specific runtime environment is defined by an application environment specification to include a minimal or reduced set of software resources required for execution of the application. The application environment is generated by determining software resource dependencies and is used to provision the application specific runtime environment in real-time in response to a request to execute the application. Use of the application specific runtime environment allows the application to be executed using fewer computing resources, e.g., memory.
    Type: Grant
    Filed: May 9, 2007
    Date of Patent: May 1, 2012
    Assignee: VMware, Inc.
    Inventors: Stevan Vlaovic, Richard Offer, Lynn LeBlanc
  • Patent number: 8171045
    Abstract: The compiled code of a computer program is stored in multiple pieces within a database. Each piece is optionally stored within a separate data record. Execution of the computer program includes using database queries to retrieve pieces of the compiled code for execution. The database and associated database management logic are used to provide numerous advantages in execution and management of the computer program. For example, in some embodiments, database queries are used to help facilitate program flow logic.
    Type: Grant
    Filed: July 31, 2008
    Date of Patent: May 1, 2012
    Assignee: XSEVO Systems, Inc.
    Inventor: Dustin Kurt Adler
  • Publication number: 20120096447
    Abstract: A technique for comprehensively acquiring calling-context information at a low cost. Call site IDs are held for each thread as a call history and used as context information. At the time of calling a method, the call history existing in a current frame is shifted left, and stacked in a new frame, with the call site ID of the call site put in the lower bits. At the time of returning from the method, the value of the original call history is returned by returning the frame. At the time of performing a virtual call, call history information is recorded into a call position profile table used to identify a method to be inlined at the time of performing JIT compiling, in addition to determined jump destination information and the number of calls.
    Type: Application
    Filed: October 14, 2011
    Publication date: April 19, 2012
    Applicant: International Business Machines Corporation
    Inventors: Derek B. Inglis, Kiyokuni Kawachiya, Tamiya Onodera, Michiaki Tatsubori
  • Patent number: 8161470
    Abstract: Automated injection of Java bytecode instructions for Java load time optimization via runtime checking with upcasts. Exemplary embodiments include a method including generating a stack for each of a plurality of bytecodes, generating a subclass configured to keep a history of instructions that have modified the stack, statically scanning a plurality of Java classes associated with the plurality of bytecodes to locate class file configurations and bytecode patterns that cause loading of additional classes to complete a verification of each of the classes in the plurality of Java classes, rewriting the bytecodes to delay the loading of the additional classes until required at a runtime, recording modifications that have been made to the stack by the instructions, and applying the modifications to each of the bytecodes in the plurality of bytecodes.
    Type: Grant
    Filed: August 31, 2007
    Date of Patent: April 17, 2012
    Assignee: International Business Machines Corporation
    Inventors: T. Mark W. Bottomley, Nicholas J. Doyle, Aleksandr V. Kennberg, Orlando E. Marquez, Amey A. Shirodkar
  • Patent number: 8161465
    Abstract: One embodiment of the present invention provides a system that facilitates performing conditional compilation. The system operates by analyzing programming language source code prior to compilation to locate a preprocessing directive that specifies a condition to be evaluated, and also identifies source code to be conditionally included during compilation of the source code. Next, the system generates evaluation source code that evaluates the condition. The system then evaluates the condition by evaluating ordinary programming language and environmental variables within the evaluation source code. Note that the run-time variables are also available at run-time during execution of a compiled version of the original source code. Next, the system conditionally includes source code associated with a result of the evaluation and compiles the revised source code.
    Type: Grant
    Filed: July 27, 2006
    Date of Patent: April 17, 2012
    Assignee: Oracle International Corporation
    Inventors: Minghui Yang, Chandrasekharan Iyer, Charles Wetherell
  • Patent number: 8146065
    Abstract: A computer implemented method, apparatus, and computer program product for managing just-in-time compilation. The process designates a set of compilation threads for exclusively performing compilation functions associated with an application. A set of computation threads is designated for executing the application. Processor cycles are dynamically allocated during runtime between the set of compilation threads and the set of computation threads to maintain a ratio of processor cycles consumed by the set of compilation threads to processor cycles consumed by the set of computation threads.
    Type: Grant
    Filed: August 13, 2007
    Date of Patent: March 27, 2012
    Assignee: International Business Machines Corporation
    Inventor: Marius Pirvu
  • Patent number: 8140985
    Abstract: Through one or more transaction calls, an application domain manager enables a host application to create, initialize, customize, and otherwise manage an isolation construct within the application.
    Type: Grant
    Filed: January 20, 2005
    Date of Patent: March 20, 2012
    Assignee: Microsoft Corporation
    Inventors: Raja Krishnaswamy, Steven J. Pratschner, Tarik Soulami
  • Patent number: 8136104
    Abstract: 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: Grant
    Filed: March 5, 2007
    Date of Patent: March 13, 2012
    Assignee: Google Inc.
    Inventors: Matthew N. Papakipos, Brian K. Grant, Morgan S. McGuire, Christopher G. Demetriou
  • Patent number: 8136103
    Abstract: A method for combined static and dynamic compilation of program code to remove delinquent loads can include statically compiling source code into executable code with instrumented sections each being suspected of including a delinquent load, and also into a separate intermediate language representation with annotated portions each corresponding to one of the instrumented sections. The method also can include executing the instrumented sections repeatedly and monitoring cache misses for each execution. Finally, the method can include dynamically recompiling selected ones of the instrumented sections using corresponding ones of the annotated portions of the separate intermediate language representation only after a threshold number of executions of the selected ones of the instrumented sections, each recompilation include a pre-fetch directive at a pre-fetch distances tuned to avoid the delinquent load.
    Type: Grant
    Filed: March 28, 2008
    Date of Patent: March 13, 2012
    Assignee: International Business Machines Corporation
    Inventors: Gheorghe C. Cascaval, Yaoqing Gao, Allan H. Kielstra, Kevin A. Stoodley
  • Patent number: 8136102
    Abstract: 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: Grant
    Filed: March 5, 2007
    Date of Patent: March 13, 2012
    Assignee: Google Inc.
    Inventors: Matthew N. Papakipos, Brian K. Grant, Christopher G. Demetriou, Morgan S. McGuire
  • Patent number: 8132162
    Abstract: A runtime machine manages a selected disk space allocated to the runtime machine by the operating system and manages a separate method cache within the selected virtual disk space. The runtime machine controls caching within the method cache of a separate result of at least one method of the application marked as cache capable. For a next instance of the method detected by the runtime machine, the runtime machine accesses the cached separate result of the method in lieu of executing the method again. The runtime machine marks a method as cache capable by analyzing the types of objects within the argument object graph and result object graph of a method. If the runtime machine detects only primitive type objects, then the runtime machine marks the method so that the result of the method will be stored in the method cache.
    Type: Grant
    Filed: July 5, 2007
    Date of Patent: March 6, 2012
    Assignee: International Business Machines Corporation
    Inventor: Robert R. Peterson
  • Publication number: 20120054725
    Abstract: A method and system for code generation and inlining. The method includes: scanning a code, where the code includes a method; determining whether the method includes a branch if the method is too large in size to be inlined, where the branch is based on runtime types of argument; profiling runtime types of actual arguments at a call site in the method if the method includes the branch; generating a polymorphic inline cache (PIC) code from a plurality of arguments, where the plurality of arguments are based on a result of the profiling step; generating a specialized method for a frequently appearing combination of the runtime types of argument and arguments that can be invoked from the PIC code; and inlining body of the specialized method into the call site if the specialized method has a body size within a permissible range.
    Type: Application
    Filed: August 30, 2011
    Publication date: March 1, 2012
    Applicant: International Business Machines Corporation
    Inventors: Derek B. Inglis, Kiyokuni Kawachiya, Tamiya Onodera, Michiaki Tatsubori
  • Patent number: 8127123
    Abstract: A system for migrating information includes a first information handling system (IHS). The first IHS is for, in response to a first boot event, booting from a computer readable medium, bypassing the first IHS user authentication requirement, and establishing a connection between the first IHS and a second IHS. The system for migrating information also includes the second IHS, coupled to the first IHS. The second IHS is for, in response to a second boot event, booting from a storage device of the second IHS, establishing the connection between the first IHS and the second IHS, and migrating information from the first IHS to the second IHS.
    Type: Grant
    Filed: September 16, 2008
    Date of Patent: February 28, 2012
    Assignee: Dell Products L.P.
    Inventors: Jefferson Raley, Shaofei Chen, Marc Jarvis, Craig Rones
  • Patent number: 8122440
    Abstract: A computer-implemented method and apparatus for enumerating program code dependencies is provided. According to an embodiment of the invention, a user selects or otherwise indicates a code base to be processed and analyzed for the purpose of enumerating those program code modules required by the code base in order to properly compile and execute the code base. Next, the code base is processed in accordance with instructions designed to mirror those of a compiler for compiling the code base. Accordingly, external program code dependencies are identified using compile time compilation parameters, as well as extensive programming language analysis.
    Type: Grant
    Filed: September 26, 2007
    Date of Patent: February 21, 2012
    Assignee: NetApp, Inc.
    Inventors: James Lentini, Thomas Talpey
  • Patent number: 8117601
    Abstract: System(s) and method(s) facilitate testing and manipulating an application internally within a client-server configuration coordinated by a communicator object. A client test-object conveys a test to a server test-object through a remoting channel and over disparate processes, e.g., a test process and designer process. A service in an application developer intermediates communication across a communicator thread and a designer thread. In response to a test, information is received in the client end as a serialized wrapper object. Manipulation is accomplished by deserializing and modifying the received information, and then transmitting the information in a serialized object through the remoting channel across processes, and via the intermediary service component across threads in the designer process. Testing and manipulation can facilitate optimizing an application, improving application's functionality as well as a user experience.
    Type: Grant
    Filed: November 14, 2007
    Date of Patent: February 14, 2012
    Assignee: Microsoft Corporation
    Inventors: David Ernest Owens, II, Jessica Lynn Fosler
  • Patent number: 8112745
    Abstract: A method includes identifying one or more features of an execution environment to be used by an application during execution and determining if use of the one or more features is restricted. The method also includes, if use of the one or more features is not restricted, compiling and executing the application in the execution environment. The method further includes, if use of any of the one or more features is restricted, blocking execution of the application in the execution environment. Determining if the use of the one or more features is restricted may include using a configuration list or a profile identified using a custom attribute. The configuration list or the profile identifies features that are available for use in the execution environment and/or features that cannot be used in the execution environment.
    Type: Grant
    Filed: March 22, 2006
    Date of Patent: February 7, 2012
    Assignee: Honeywell International Inc.
    Inventors: Piyush Garyali, Ziad M. Kaakani, Vivek B. Varma
  • Patent number: 8108845
    Abstract: A computing system receives a program created by a technical computing environment, analyzes the program, generates multiple program portions based on the analysis of the program, dynamically allocates the multiple program portions to multiple software units of execution for parallel programming, receives multiple results associated with the multiple program portions from the multiple software units of execution, and provides the multiple results or a single result to the program.
    Type: Grant
    Filed: May 15, 2007
    Date of Patent: January 31, 2012
    Assignee: The Mathworks, Inc.
    Inventors: John N. Little, Joseph F. Hicklin, Jocelyn Luke Martin, Nausheen B. Moulana, Halldor N. Stefansson, Loren Dean, Roy E. Lurie, Stephen C. Johnson, Penelope L. Anderson, Michael E. Karr, Jason A. Kinchen
  • Patent number: 8104027
    Abstract: 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 (10) to be translated. Depending upon the particular subject and target computing environments involved in the conversion, the program code conversion apparatus utilizes either base nodes, complex nodes, polymorphic nodes, and architecture specific nodes, or some combination thereof, in generating the intermediate representation.
    Type: Grant
    Filed: May 28, 2008
    Date of Patent: January 24, 2012
    Assignee: International Business Machines Corporation
    Inventors: Daniel Owen, Jonathan Jay Andrews, Miles Philip Howson, David Haikney
  • Patent number: 8104028
    Abstract: Repetitive synchronization in program code is optimized through lock coarsening that is performed subject to a number of constraints. Using a forward pass over the program code followed by a backward pass, region extent bits may be determined that identify the points in the program where object locking can be coarsened. The program code may then be modified to realize coarsened locking regions determined based on the region extent bits. Alternatively, previously determined value numbers may provide much of the information collected by the two passes. In such a case, a single pass over the program code may locate features that limit lock coarsening opportunities. A set of synchronization operations that can be removed may then be determined and used when modifying the program code to coarsen locking regions.
    Type: Grant
    Filed: March 31, 2009
    Date of Patent: January 24, 2012
    Assignee: International Business Machines Corporation
    Inventors: Mark Graham Stoodley, Vijay Sundaresan
  • Patent number: 8104034
    Abstract: Embodiments of the present invention provide an architecture for securely and efficiently executing byte code generated from a general programming language. In particular, a computer system is divided into a hierarchy comprising multiple types of virtual machines. A thin layer of software, known as a virtual machine monitor, virtualizes the hardware of the computer system and emulates the hardware of the computer system to form a first type of virtual machine. This first type of virtual machine implements a virtual operating domain that allows running its own operating system. Within a virtual operating domain, a byte code interpreter may further implement a second type of virtual machine that executes byte code generated from a program written in a general purpose programming language. The byte code interpreter is incorporated into the operating system running in the virtual operating domain.
    Type: Grant
    Filed: November 30, 2005
    Date of Patent: January 24, 2012
    Assignee: Red Hat, Inc.
    Inventor: Ulrich Drepper
  • Patent number: 8099723
    Abstract: A method, apparatus, and computer instructions for referencing a constant pool. A determination is made as to whether a bytecode references the constant pool. A relative offset to the constant pool is identified for the bytecode, in response to the bytecode referencing the constant pool. The bytecode is then replaced with a new bytecode containing the relative offset. The relative offset is used to reference the constant pool.
    Type: Grant
    Filed: April 3, 2008
    Date of Patent: January 17, 2012
    Assignee: International Business Machines Corporation
    Inventors: Peter Wiebe Burka, Graham Alan Chapman, Trent A. Gray-Donald, Karl Michael Taylor
  • Patent number: 8099724
    Abstract: A patch-based mechanism is disclosed for providing fast invocations of a target method from a compiled calling method. The code for the calling method is stored into a storage. The code for the calling method comprises an instruction for invoking the target method, where the instruction comprises a parameter. In response to a state change from a current state to a new state that is experienced by the target method, the parameter is modified from a first value to a second value, where the second value indicates the correct address for facilitating the execution of the target method in its new state. Thus, the parameter in the instruction for invoking the target method always reflects the correct state of the target method, which provides for a fast invocation of the target method when the instruction is executed.
    Type: Grant
    Filed: February 28, 2006
    Date of Patent: January 17, 2012
    Assignee: Oracle America, Inc.
    Inventor: Christopher J. Plummer
  • Patent number: 8099729
    Abstract: A device (45) receives new program files (46) and uses pre-internalized images to avoid having to internalize a program file every time that program execution occurs. In one embodiment, a software Virtual Machine (50) in the device functions to implement the pre-internalization. Once the program files are pre-internalized to create images that are stored in a permanent memory (56) of the device, the images may subsequently be executed without having to perform a pre-internalization operation. Additionally, use of dynamic memory (52) is reduced in connection with subsequent program execution and execution time of new program files is reduced.
    Type: Grant
    Filed: June 5, 2006
    Date of Patent: January 17, 2012
    Assignee: Freescale Semiconductor, Inc.
    Inventors: Iris M. Plaxton, Samuel J. Rauch, John H. Osman, Andrew A. Bjorksten, Jason M. Bennett
  • Publication number: 20120005661
    Abstract: A method for a discrete event simulation model of a system utilizing a just-in-time compilation for one or more code blocks associated with an event in one or more discrete event simulation models is disclosed. The method comprises the steps of determining the event in a discrete event simulation model according to a kind of event, retrieving the code block associated with the event, compiling the code block into an object file using a compiler, linking the object file with a predetermined function in a simulation library, compiling the object file and the predetermined function into a customized dynamic link library, loading the customized dynamic link library (DLL) within a discrete event simulation program execution and linking the customized DLL to a simulation program. The method allows user entered logic to be executed in high speed by integrating a just-in-time compiler embedded into the simulation model to allow dynamic generation of high speed code blocks within one or more simulations.
    Type: Application
    Filed: June 30, 2010
    Publication date: January 5, 2012
    Inventors: Lenrick Johnston, Quint King
  • Patent number: 8091077
    Abstract: Systems and methods for the efficient handling of rare events by modification of executable code is provided. The present invention eliminates the need for event checking code and handling in the primary execution path of compiled code by using a patch table to modify code during execution. Accordingly, event handling does not introduce additional instructions to the primary execution path, and thus will not interfere with compiler optimizations for maximal performance along the primary execution path. The present invention, therefore, provides event handling for events that occur rarely while reducing the size of the code for execution on memory-constrained devices.
    Type: Grant
    Filed: October 11, 2006
    Date of Patent: January 3, 2012
    Assignee: Oracle America, Inc.
    Inventors: Oleg A. Pliss, Ioi K. Lam
  • Patent number: 8082542
    Abstract: A computer implemented method, apparatus, and computer usable program code for processing a class file. The class file is loaded onto a target device. A determination is made whether verification is enabled. Static constraints are checked in response to determining the verification is enabled. A determination is made whether subroutines are present in a set of methods within the class file. The subroutines are in-lined in response to determining that subroutines are present in the set of methods.
    Type: Grant
    Filed: October 4, 2006
    Date of Patent: December 20, 2011
    Assignee: International Business Machines Corporation
    Inventors: Thomas Mark Walter Bottomley, Peter Wiebe Burka, Jeffrey Michael Disher, Karl Michael Taylor
  • Patent number: 8079023
    Abstract: Described is a technology by which a compiler's intermediate representation is generated in a way that includes type checking to ensure safe execution. Typed representation of virtual method invocation uses an exact class name to represent objects of the class but not those of the subclasses, and a combined class type as an encoding of an existential type to represent objects of the class and subclasses of the class. Typed representation of interface method invocation is also provided, as is testing whether the object can be cast to a class, to an interface and/or to a class vector. Vector store checking is also able to be type checked. The medium-level intermediate representation is translated into a low-level intermediate representation, including choosing data representation for types, and converting medium-level intermediate representation operators into instructions in the low-level representation.
    Type: Grant
    Filed: March 22, 2007
    Date of Patent: December 13, 2011
    Assignee: Microsoft Corporation
    Inventor: Juan Chen
  • Patent number: 8056061
    Abstract: A data processing device and method are provided. The data processing device includes a code storage unit storing an original code to be translated into a machine language code, a code analyzer analyzing the original code stored in the code storage unit, a register allocator allocating a predesignated register for a command included in the original code based on the result of analysis, and a code executor executing a machine language code generated using the allocated register.
    Type: Grant
    Filed: October 20, 2005
    Date of Patent: November 8, 2011
    Assignee: Samsung Electronics Co., Ltd.
    Inventors: Sang-gyu Lee, Chong-mok Park
  • Publication number: 20110271262
    Abstract: A method for detecting transient fault includes translating binary code to an intermediate language code. An instruction of interest in the intermediate language code is identified. Reliability instructions are inserted in the intermediate language code to validate values from the instruction of interest. The intermediate language code is translated to binary code. Other embodiments are described and claimed.
    Type: Application
    Filed: July 13, 2011
    Publication date: November 3, 2011
    Inventors: George A. Reis, Robert Cohn, Shubhendu S. Mukherjee
  • Patent number: 8051411
    Abstract: A method for copy propagations of a processor including two clusters, each cluster comprising a first function unit and a second function unit, a first local register file and a second local register file being respectively accessible by the first and second function unit only, and a global register file having a ping-pong structure to access the first and second local register files, the method comprising the steps of: (a) listing possible copy propagation paths between two nodes of a data flow graph; (b) calculating a profit of machine cycles for each of the copy propagation paths according to constraints of the processor; and (c) performing a copy propagation through the copy propagation path if the profit thereof is greater than a threshold value.
    Type: Grant
    Filed: August 8, 2007
    Date of Patent: November 1, 2011
    Assignee: National Tsing Hua University
    Inventors: Jenq Kuen Lee, Chung Ju Wu, Sheng Yuan Chen
  • Publication number: 20110265067
    Abstract: A tracing just-in-time (TJIT) compiler system is described for performing parallelization of code in a runtime phase in the execution of code. Upon detecting a hot loop during the execution of the code, the compiler system extracts trace information from sequentially recorded traces. In a first phase, the compiler system uses the trace information to identify at least one group of operation components that can be operated on in a parallel manner. In a second phase, the compiler system provides instructions which allocate the group of operation components to plural processing resources. A native code generator module carries out those instructions by recompiling native code that directs the operation of a native system to perform parallel processing. The compiler system terminates a group if it encounters program data in a loop iteration that is not consistent with previously encountered predicated information (upon which it records a new trace in a sequential manner).
    Type: Application
    Filed: April 21, 2010
    Publication date: October 27, 2011
    Applicant: Microsoft Corporation
    Inventors: Wolfram Schulte, Nikolai Tillmann, Michal J. Moskal, Manuel A. Fahndrich, Daniel JP Leijen, Barend H. Venter
  • Patent number: 8042096
    Abstract: Method for automatically selecting a software application being a program for execution on a virtual machine, including the steps of receiving an exit status value from a terminating software application; translating the exit status value to an identifier for the next software application to be executed, wherein a mapping table is used; executing on the virtual machine the next software application (J4) program that is represented by the identifier.
    Type: Grant
    Filed: April 13, 2005
    Date of Patent: October 18, 2011
    Assignee: Thomson Licensing
    Inventors: Jobst Hoerentrup, Dirk Gandolph, Ralf Ostermann, Carsten Herpel, Uwe Janssen, Hartmut Peters, Andrej Schewzow, Marco Winter
  • Patent number: 8042103
    Abstract: A method and apparatus for speeding the startup of applications by making available a pre-translated class file to the class loaders. The Java virtual machine (JVM) starts faster if application class loaders can use the pre-translated class files or internal representations instead of fetching classes from Java archive files or system directories. JVM understands java executable format and can start faster by using them without the user application class loaders having to know the complexities of executable files. The Java archive file format is modified to allow the pre-translated class files to be stored in the Java archive file such that the class loaders are able to process the modified Java archive file without requiring any change to the class loader.
    Type: Grant
    Filed: November 29, 2005
    Date of Patent: October 18, 2011
    Assignee: International Business Machines Corporation
    Inventors: Peter Wiebe Burka, Ronald Servant
  • Patent number: 8037482
    Abstract: Reaching a determination associated with a class of an object is disclosed. An identifier associated with the class of the object is extracted from a pointer to the object. The extracted identifier is compared to a comparison value. At least in part using a result of the comparison a determination is reached.
    Type: Grant
    Filed: December 6, 2005
    Date of Patent: October 11, 2011
    Assignee: Azul Systems, Inc.
    Inventors: Gil Tene, Cliff N. Click, Jr., Murali Sundaresan, Michael A. Wolf
  • Patent number: 8037460
    Abstract: Software expressed in an intermediate level language is stored into a database and interpreted in a virtual machine in a database management system. A dynamic compilation process in the database management system asynchronously converts the software into native code when predetermined conditions are met. Thereafter, the compilation process persists the native code into the database. At the time of persisting the native code, the compilation process also stores in the database, an indication of any properties that are used in compilation of the native code. At run time, when the native code needs to be executed, the virtual machine checks if the indication stored in the database matches a new indication of the constants, and if they do the persisted code is executed or else the persisted code is invalidated. The persisted code is also invalidated when a new version of ILL software is stored into the database.
    Type: Grant
    Filed: January 26, 2007
    Date of Patent: October 11, 2011
    Assignee: Oracle International Corporation
    Inventors: Robert H. Lee, David Unietis, Mark Jungerman
  • Publication number: 20110246974
    Abstract: A dynamic compiler program product, method, and device for sequentially compiling a partial computer program in a computer. The program product causes the computer to function as: an execution status acquisition unit for acquiring respective values of one or more pieces of current execution status information; a determination unit for reading, from the shared pool, the second list of the conditions associated with an executable instruction stream generated by compiling a partial program that is the same as a partial program to be compiled and determining whether respective values of corresponding pieces of current execution status information satisfy the conditions; and a dynamic compilation unit for generating an executable instruction stream by compiling the partial program to be compiled on the condition that a result of determination made by the determination unit is negative.
    Type: Application
    Filed: March 31, 2011
    Publication date: October 6, 2011
    Applicant: INTERNATIONAL BUSINESS MACHINES CORPORATION
    Inventors: Kiyokuni Kawachiya, Kazunori Ogata
  • Patent number: 8028299
    Abstract: The present invention discloses a modified computer architecture (50, 71, 72) which enables an applications program (50) to be run simultaneously on a plurality of computers (M1, . . . Mn). Shared memory at each computer is updated with amendments and/or overwrites so that all memory read requests are satisfied locally. During initial program loading (75), or similar, instructions which result in memory being re-written or manipulated are identified (92). Additional instructions are inserted (103) to cause the equivalent memory locations at all computers to be updated. In particular, the finalization of JAVA language classes and objects is disclosed (162, 163) so finalization only occurs when the last class or object present on all machines is no longer required.
    Type: Grant
    Filed: October 25, 2005
    Date of Patent: September 27, 2011
    Assignee: Waratek Pty, Ltd.
    Inventor: John Matthew Holt
  • Patent number: 8024704
    Abstract: The present invention relates to systems and methods that facilitate dynamic programming language execution in a managed code environment. A class component is provided that declares an inheritance hierarchy for one or more tagged values associated with a dynamic programming language. During execution of the tagged values, a rules component mitigates user-defined types from inheriting or deriving properties from the tagged values in order to support a type safe runtime environment. A bifurcated class tree is provided that defines non-tagged type elements on one side of the tree and tagged type element values on an alternate branch of the tree. The rules component analyzes runtime extensions that help to prevent data from one component of the tree deriving or inheriting properties from another component of the tree. The runtime extensions include such aspects as cast class extensions, test class extensions, and conversion class extensions for converting data types from one class subtype to another.
    Type: Grant
    Filed: August 31, 2006
    Date of Patent: September 20, 2011
    Assignee: Microsoft Corporation
    Inventor: Eric Meijer
  • Patent number: 8024720
    Abstract: A computer implemented method, computer usable program code, and a data processing system for selecting a candidate implementation of a virtual overridden method for inlining into a calling method. A determination as to which implementation of a virtual overridden method to inline is made based on its relative “hotness” compared to the other implementations of the same method. The relative hotness can be inferred from the invocation count and sampling count that the virtual machine and the just-in-time compiler already collect for other purposes, that is, without collecting and storing of call-edge profiling information. When a method is being compiled and it is identified that the method contains a call to an overridden method, a candidate for inlining from among the implementations of the overridden method is selected based on relative hotness values. The candidate implementation of the overridden method is then inlined, with a guard, into the calling method.
    Type: Grant
    Filed: April 17, 2006
    Date of Patent: September 20, 2011
    Assignee: International Business Machines Corporation
    Inventors: Derek Bruce Inglis, Vijay Sundaresan, Dina Tal
  • Patent number: 8024716
    Abstract: A system comprising a compiler that compiles source-level code to generate an intermediate-level instruction comprising a predetermined component. The intermediate-level instruction is an at least partially optimized version of the source-level code. Execution of the predetermined component triggers the execution of a series of instructions that, when executed, generates previously-unavailable data that is used to re-generate the intermediate-level instruction. The re-generated intermediate-level instruction has a length less than or equal to that of the intermediate-level instruction.
    Type: Grant
    Filed: July 26, 2005
    Date of Patent: September 20, 2011
    Assignee: Texas Instruments Incorporated
    Inventors: Jean-Philippe Lesot, Mikael Peltier, Gilbert Cabillic