Just-in-time Compiling Or Dynamic Compiling (e.g., Compiling Java Bytecode On A Virtual Machine) Patents (Class 717/148)
  • Patent number: 8819648
    Abstract: Execution of non-native operating system images within a virtualized computer system is improved by providing a mechanism for retrieving translated code physical addresses corresponding to un-translated code branch target addresses using a host code map. Hardware acceleration mechanisms, such as content-accessible look-up tables, directory hardware, or processor instructions that operate on tables in memory can be provided to accelerate the performance of the translation mechanism. The virtual address of the branch instruction target is used as a key to look up a corresponding record that contains a physical address of the translated code page containing the translated branch instruction target, and execution is directed to the physical address obtained from the record, once the physical page containing the translated code corresponding the target address is loaded in memory.
    Type: Grant
    Filed: July 20, 2012
    Date of Patent: August 26, 2014
    Assignee: International Business Machines Corporation
    Inventor: Alexander Barraclough Brown
  • Patent number: 8819649
    Abstract: 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: Grant
    Filed: September 9, 2011
    Date of Patent: August 26, 2014
    Assignee: Microsoft Corporation
    Inventors: Louis Lafreniere, Curtis Man, Jedrzej Miadowicz, Paul Leathers, Jitendra Kumar, Arjun Bijanki
  • Publication number: 20140237458
    Abstract: Systems and methods for just-in-time (JIT) code compilation by a computer system. An example method may comprise identifying a defined pattern in a byte stream, evaluating a conditional expression associated with the pattern, and compiling the byte stream into a native code, while excluding, in view of the evaluating, a portion of byte stream associated with the pattern.
    Type: Application
    Filed: February 18, 2013
    Publication date: August 21, 2014
    Applicant: RED HAT, INC.
    Inventors: Filip Eliás, Filip Nguyen
  • Patent number: 8813048
    Abstract: Embodiments of the claimed subject matter are directed to methods and a system that allows an application comprising a single code set under the COBOL Programming Language to execute in multiple platforms on the same multi-platform system (such as a mainframe). In one embodiment, a single code set is pre-compiled to determine specific portions of the code set compatible with the host (or prospective) platform. Once the code set has been pre-compiled to determine compatible portions, those portions may be compiled and executed in the host platform. According to these embodiments, an application may be executed from a single code set that is compatible with multiple platforms, thereby potentially reducing the complexity of developing the application for multiple platforms.
    Type: Grant
    Filed: January 5, 2010
    Date of Patent: August 19, 2014
    Assignee: Accenture Global Services Limited
    Inventor: Mark Neft
  • Patent number: 8813044
    Abstract: A method, system, and article of manufacture are disclosed for transforming a definition of a process for delivering a service. This service process definition is comprised of computer readable code. The method comprises the steps of expressing a given set of assumptions in a computer readable code; and transforming said process definition by using a processing unit to apply said assumptions to said process definition to change the configuration of the process definition. The process definition may be transformed by using factors relating to the specific context in or for which the process definition is executed. Also, the process definition may be transformed by identifying, in a flow diagram for the service process definition, flows to which the assumptions apply, and applying program rewriting techniques to those identified flows.
    Type: Grant
    Filed: September 6, 2012
    Date of Patent: August 19, 2014
    Assignee: International Business Machines Corporation
    Inventors: David F. Bantz, Steven J. Mastrianni, James R. Moulic, Dennis G. Shea
  • Patent number: 8813051
    Abstract: A method for running multiple copies of the same native code in a Java Virtual Machine is described. In one embodiment, such a method includes providing a class to enable segregating multiple copies of the same native code. The method defines, within the class, a native method configured to dispatch operation of the native code. The method further includes generating first and second instances of the class. Calling the native method in the first instance causes a first copy of the native code to run in a first remote execution container (e.g., a first process). Similarly, calling the native method in the second instance causes a second copy of the native code to run in a second remote execution container (e.g., a second process) separate from the first remote execution container. A corresponding computer program product is also disclosed.
    Type: Grant
    Filed: April 14, 2011
    Date of Patent: August 19, 2014
    Assignee: International Business Machines Corporation
    Inventors: Michael Hilton Dawson, Graeme Johnson
  • Patent number: 8806459
    Abstract: A method and system for performing dynamic instrumentation. At least some of the illustrative embodiments are methods comprising setting at least one monitor value (wherein the at least one monitor value is associated with a software monitoring handler), detecting a value within a register equal to the at least one monitor value, and executing the software monitoring handler based on the detecting.
    Type: Grant
    Filed: December 13, 2007
    Date of Patent: August 12, 2014
    Assignee: Texas Instruments Incorporated
    Inventors: Gilbert Cabillic, Jean-Philippe Lesot
  • Patent number: 8806460
    Abstract: The aspects enable a computing device to allocate memory space to variables during runtime compilation of a software application. A first variable associated with a code segment within code being compiled may be identified and assigned a priority tag. A second variable associated with another code segment within the code being compiled may also be assigned a priority tag. A determination may be made regarding whether the first and second variables are contemporaneously live during execution, and whether legal storage location sets for the first and second variables overlap. The assigned priority tags may be used for assigning storage locations to the first and second variables based on the determination.
    Type: Grant
    Filed: January 26, 2012
    Date of Patent: August 12, 2014
    Assignee: QUALCOMM Incorporated
    Inventor: Christopher A. Vick
  • Patent number: 8799878
    Abstract: A multi level virtual function table uses a hierarchy of chunks or segments of virtual function tables to identify methods for a particular class. At least one level of indirection pointers may point to individual virtual function table chunks, which may be shared by multiple classes. In some embodiments, fixed size chunks of virtual function tables may be used, other embodiments may use variable sized chunks of virtual function tables. In just in time compiled code, virtual function tables may be limited to sharing across parent and child classes, while in pre-compiled code, more complex sharing may be used.
    Type: Grant
    Filed: September 14, 2012
    Date of Patent: August 5, 2014
    Assignee: Microsoft Corporation
    Inventor: David J. Hiniker
  • Patent number: 8799879
    Abstract: One embodiment provides a system that protects translated guest program code in a virtual machine that supports self-modifying program code. While executing a guest program in the virtual machine, the system uses a guest shadow page table associated with the guest program and the virtual machine to map a virtual memory page for the guest program to a physical memory page on the host computing device. The system then uses a dynamic compiler to translate guest program code in the virtual memory page into translated guest program code (e.g., native program instructions for the computing device). During compilation, the dynamic compiler stores in a compiler shadow page table and the guest shadow page table information that tracks whether the guest program code in the virtual memory page has been translated. The compiler subsequently uses the information stored in the guest shadow page table to detect attempts to modify the contents of the virtual memory page.
    Type: Grant
    Filed: June 30, 2009
    Date of Patent: August 5, 2014
    Assignee: Oracle America, Inc.
    Inventors: Gregory M. Wright, Christopher A. Vick, Peter B. Kessler
  • Patent number: 8793669
    Abstract: 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: Grant
    Filed: July 17, 2012
    Date of Patent: July 29, 2014
    Assignee: Concurix Corporation
    Inventor: Charles D. Garrett
  • Patent number: 8793674
    Abstract: A method for compiler-guided optimization of MapReduce type applications that includes applying transformations and optimizations to JAVA bytecode of an original application by an instrumenter which carries out static analysis to determine application properties depending on the optimization being performed and provides an output of optimized JAVA bytecode, and executing the application and analyzing generated trace and feeds information back into the instrumenter by a trace analyzer, the trace analyzer and instrumenter invoking each other iteratively and exchanging information through files.
    Type: Grant
    Filed: September 18, 2012
    Date of Patent: July 29, 2014
    Assignee: NEC Laboratories America, Inc.
    Inventors: Nishkam Ravi, Jun Liu, Srimat T. Chakradhar
  • Patent number: 8793670
    Abstract: 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: Grant
    Filed: January 7, 2013
    Date of Patent: July 29, 2014
    Assignee: Oracle International Corporation
    Inventor: Marcus Lagergren
  • Patent number: 8793667
    Abstract: An analysis tool analyzes a software system by simulating runtime binding in order to identify function-level code dependencies. The tool receives a list of one or more entry point functions and identifies other functions that can be invoked if the entry point functions are executed. The tool generates a tracker graph having tracker nodes representing classes that can be instantiated from the entry points. Each tracker node identifies functions/methods in that class that can be invoked from the entry points. If the software system uses an object-relational mapping to a database, the tracker graph also identifies the portions of the database that can be accessed from the entry points. The tool can be used to partition the functionalities of the software system into core and non-core functionalities in order to support upgrading while maintaining high-availability.
    Type: Grant
    Filed: September 14, 2012
    Date of Patent: July 29, 2014
    Assignee: Google Inc.
    Inventors: Andrew Huang, Hong Yan
  • Patent number: 8782622
    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: Grant
    Filed: November 7, 2008
    Date of Patent: July 15, 2014
    Assignee: Advanced Micro Devices, Inc.
    Inventor: Azeem S. Jiva
  • Patent number: 8782623
    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: Grant
    Filed: October 14, 2011
    Date of Patent: July 15, 2014
    Assignee: International Business Machines Corporation
    Inventors: Derek B. Inglis, Kiyokuni Kawachiya, Tamiya Onodera, Michiaki Tatsubori
  • Patent number: 8776031
    Abstract: Embodiments of the present invention provide computer program products, methods, and systems for extracting and revising data for a resource embedded in a dynamic-link library (DLL) assembly. In various embodiments, the DLL assembly is loaded and data for a resource is extracted from the assembly. In particular embodiments, a manifest is created that includes a path for the extracted data extracted. This path includes information on placing the data for the resource into the assembly to construct a necessary DLL structure compatible with the program application. After the extracted data has been edited to create replacement data, in various embodiments, the replacement data is imported into the assembly based on the path for the extracted data and the assembly is compiled to create a revised DLL that may be read by the program application in place of or in addition to the original DLL assembly to utilize the replacement data.
    Type: Grant
    Filed: August 9, 2012
    Date of Patent: July 8, 2014
    Assignee: Noble Systems Corporation
    Inventors: Michael Christopher Frances Goodwin, Andrew Michael Krock
  • Patent number: 8776033
    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: Grant
    Filed: December 23, 2010
    Date of Patent: July 8, 2014
    Assignee: International Business Machines Corporation
    Inventors: Andrew R. Low, Marcel Mitran, Kishor V. Patil, Gavin Rolleston, Ivan Sham, Karl M. Taylor
  • Patent number: 8776036
    Abstract: A mechanism for determining support criteria for shared libraries based on their priority levels is described. A method of embodiments of the invention includes extracting interface provisioning detail relating to interfaces associated with shared libraries provided by an operating system running on a computer system. The interfaces include application binary interfaces (ABIs). The method further includes detecting interface usage detail associated with the interfaces. The interface usage detail is based on a frequency at which one or more interfaces are used by one or more third-party software programs running on the operating system. The method further includes comparing the interface provisioning detail with the interface usage detail to determine an importance level of each shared library, and analyzing comparison results obtained from the comparison. The analyzing includes assigning a priority level to each shared library based on its importance level.
    Type: Grant
    Filed: November 23, 2010
    Date of Patent: July 8, 2014
    Assignee: Red Hat, Inc.
    Inventor: Kushal Das
  • Patent number: 8769511
    Abstract: A virtual machine executive (VME) system operating on a target platform that includes a virtual machine monitor (VMM) and a dynamic compiler, in particular, a trace compiler (TC). System embodiments include a virtual machine monitor configured to record a trace corresponding to a selected cycle, and configured to transform the trace into a representation of a trace tree; and a trace compiler cooperating with the virtual machine monitor to compile the representation of the trace tree into a compiled code segment of native machine code executable on the target platform, in which the trace is a linear instruction sequence traversing at least a portion of a method, a loop, or a branching node.
    Type: Grant
    Filed: February 16, 2007
    Date of Patent: July 1, 2014
    Assignee: The Regents of the University of California
    Inventors: Andreas Imre Gal, Michael Franz
  • Patent number: 8769507
    Abstract: A method, system, and article of manufacture are disclosed for transforming a definition of a process for delivering a service on a specified computing device. This service process definition is comprised of computer readable code. The method comprises the steps of expressing a given set of assumptions in a computer readable code; and transforming the definition by using a processing unit to apply the assumptions to the definition of the process to change the way in which the process operates. The definition of the process may be transformed by using factors relating to the specific context in or for which the definition is executed. Also, the definition may be transformed by identifying, in a flow diagram for the process, flows to which the assumptions apply, and applying program rewriting techniques to those identified flows.
    Type: Grant
    Filed: May 14, 2009
    Date of Patent: July 1, 2014
    Assignee: International Business Machines Corporation
    Inventors: David F. Bantz, Steven J. Mastrianni, James R. Moulic, Dennis G. Shea
  • Patent number: 8762973
    Abstract: The CPU includes a byte code interpretation unit that sequentially reads intermediate code instructions along an execution route, determining whether or not there is a compilation result of the read intermediate code instruction in the compilation result storage unit, interpreting the intermediate code instruction when there is no compilation result, and designating the compilation result if there is a compilation result; and a program execution unit that, if received the interpretation result of the intermediate code instruction from the byte code interpretation unit, executes the intermediate code instruction and, if received the designation of the compilation result, executes the program by executing designated native code. The CPU includes a compilation execution unit that compiles the intermediate code instruction interpreted by the byte code interpretation unit to generate the native code and stores them in the compilation result storage unit.
    Type: Grant
    Filed: August 22, 2012
    Date of Patent: June 24, 2014
    Assignee: Fujitsu Limited
    Inventor: Kiyoshi Miyazaki
  • Patent number: 8762965
    Abstract: An information processing system includes a preparation machine with an installed image; an execution machine on which the installed image is virtually installed; and a virtualizer for virtualizing the installed image on the execution machine to produce a virtually installed image by using a hierarchy of selective virtualizers, wherein the virtualizing is selective such that not all operations of the executing software of the installed image at any particular level are virtualized.
    Type: Grant
    Filed: August 31, 2012
    Date of Patent: June 24, 2014
    Assignee: International Business Machines Corporation
    Inventors: Bowen L. Alpern, Joshua S. Auerbach, Vasanth Bala, Thomas V. Frauenhofer, Jobi George, Todd W. Mummert, Michael A. Pigott
  • Patent number: 8762972
    Abstract: Methods and apparatuses are provided for facilitating execution of kernels requiring runtime compilation. A method may include implementing a driver for a framework for handling kernels requiring runtime compilation. The method may further include receiving, by the driver, code for a kernel requiring at least partial runtime compilation for execution using the framework. The method may additionally include obtaining, by the driver, a compiled executable version of the kernel. The obtained compiled executable version of the kernel may not have been locally compiled. The method may also include causing, by the driver, the compiled executable version of the kernel to be provided for execution. Corresponding apparatuses are also provided.
    Type: Grant
    Filed: February 8, 2011
    Date of Patent: June 24, 2014
    Assignee: Nokia Corporation
    Inventors: Jari Nikara, Eero Aho
  • Patent number: 8756589
    Abstract: A JIT (Just-In-Time) compiler performs dual-mode code generation by determining whether an application has opted-in to SIMD (Single Instruction Multiple Data) code generation both at JIT-time and at runtime. The application may select the code generation mode by identifying whether it has opted-in to SIMD code generation. As a result, the underlying implementation guarantees application compatibility by allowing the application to select the code generation mode. Additionally, applications have the ability to select into different code generation modes during concurrent execution.
    Type: Grant
    Filed: June 14, 2011
    Date of Patent: June 17, 2014
    Assignee: Microsoft Corporation
    Inventors: Sachin Manchanda, Anand Rengasamy, Pratap Lakshman, Srivatsan Kidambi, Ramesha Chandrashekhar
  • Patent number: 8756581
    Abstract: An apparatus includes a processor for executing instructions at runtime and instructions for dynamically compiling the set of instructions executing at runtime. A memory device stores the instructions to be executed and the dynamic compiling instructions. A memory device serves as a trace buffer used to store traces during formation during the dynamic compiling. The dynamic compiling instructions includes a next-executing-cycle (N-E-C) trace selection process for forming traces for the instructions executing at runtime. The N-E-C trace selection process continues through an existing trace-head when forming traces without terminating a recording of a current trace if an existing trace-head is encountered.
    Type: Grant
    Filed: February 3, 2011
    Date of Patent: June 17, 2014
    Assignee: International Business Machines Corporation
    Inventors: Jose G. Castanos, Hiroshige Hayashizaki, Hiroshi Inoue, Mauricio J. Serrano, Peng Wu
  • Patent number: 8745603
    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: May 10, 2013
    Date of Patent: June 3, 2014
    Assignee: Google Inc.
    Inventors: Morgan S. McGuire, Christopher G. Demetriou, Brian K. Grant, Matthew N. Papakipos
  • Publication number: 20140149971
    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: acquire respective values of one or more pieces of current execution status information; read, from the shared pool, a 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 determine whether respective values of corresponding pieces of current execution status information satisfy the conditions. The program product causes the computer to further generate an executable instruction stream by compiling the partial program to be compiled on the condition that a result of determination made is negative.
    Type: Application
    Filed: December 4, 2013
    Publication date: May 29, 2014
    Applicant: INTERNATIONAL BUSINESS MACHINES CORPORATION
    Inventors: Kiyokuni Kawachiya, Kazunori Ogata
  • Patent number: 8739139
    Abstract: Provided is a computer-readable, non-transitory medium storing an algorithm selection program for selecting one of algorithm among of a plurality of algorithms included in an extension program for executing a predetermined function when a call-out source program calls out the extension program, the algorithm selection program causing an information processing device including a storage device to execute:acquiring, from the storage device, selection information in which a command for calling out the extension program in the call-out source program and the one of algorithm are correlated; and selecting an algorithm for executing the predetermined function based on the acquired selection information.
    Type: Grant
    Filed: December 27, 2011
    Date of Patent: May 27, 2014
    Assignee: Fujitsu Limited
    Inventor: Ikuo Miyoshi
  • Patent number: 8732723
    Abstract: An execution apparatus that executes a computer program executes the computer program and loads a class that is requested while the computer program is being executed. The loaded class is the class in response to the computer program that is being executed.
    Type: Grant
    Filed: January 26, 2007
    Date of Patent: May 20, 2014
    Assignee: Canon Kabushiki Kaisha
    Inventor: Hirokazu Oi
  • Patent number: 8726249
    Abstract: A bootup device and method for an application program on a mobile equipment to improve the bootup speed of the application program on the mobile equipment. The bootup device has an application management module, that boots up a virtual machine module based on the application program to be run. A virtual machine module, loads codes of the application program and Just in Time (JIT) compilation results of a bootup process of the application program into a memory, search, in the JIT compilation results, for local JIT compiled codes corresponding to the bootup process code segment to be executed, and executes the found local JIT compiled codes when executing each bootup process code segment of the application program. A storage management module, store and reads the codes of the application program and the JIT compilation results obtained from the JIT compilation of the bootup process of the application program.
    Type: Grant
    Filed: February 21, 2011
    Date of Patent: May 13, 2014
    Assignee: ZTE Corportaion
    Inventors: Youpeng Gu, Lifeng Xu, Wei Hu, Sheng Zhong, Wei Wang, Zemin Wang
  • Patent number: 8719805
    Abstract: The present invention provides a method and system for producing intermediate representation of source code listings with possibly mixed syntaxes to assist software development applications in presenting and analyzing the source code listings through reading the intermediate representation. A source code processor calls Application Programming Interfaces (APIs) to preserve source code information, which includes intermediate representation data sets and is preferably stored in a file-based repository. The source code processor is of a compiler, a preprocessor, a parser, or a comment document processor. The data sets capture lexical, syntax and semantic information of source code construct elements, and comprise of location, processor identification, construct category, and attribute data.
    Type: Grant
    Filed: May 9, 2012
    Date of Patent: May 6, 2014
    Inventor: Kan Zhao
  • Patent number: 8707280
    Abstract: A computing device-implemented method includes receiving a program, analyzing and transforming the program, determining an inner context and an outer context of the program based on the analysis of the program, and allocating one or more portions of the inner context of the program to two or more labs for parallel execution. The method also includes receiving one or more results associated with the parallel execution of the one or more portions from the two or more labs, and providing the one or more results to the outer context of the program.
    Type: Grant
    Filed: June 29, 2012
    Date of Patent: April 22, 2014
    Assignee: The MathWorks, Inc.
    Inventors: Halldor N Stefansson, Brett Baker, Edric Ellis, Joseph F Hicklin, John N Little, Jocelyn Luke Martin, Piotr R Luszczek, Nausheen B Moulana, Loren Dean, Roy E. Lurie
  • Patent number: 8701097
    Abstract: A compiler and method of optimizing code by partial inlining of a subset of blocks of called blocks of code into calling blocks of code. A restart of the called blocks of code is provided for the case where non-inlined blocks of code are reached at run time. Blocks selected for partial inlining may include global side effects depending on the computer program environment. Global side effects in the selected blocks of code leading to a restart are sanitized in order to defer changes to the global state of the computer program.
    Type: Grant
    Filed: February 8, 2011
    Date of Patent: April 15, 2014
    Assignee: International Business Machines Corporation
    Inventors: Patrick R. Doyle, James I. A. Gartley, Derek B. Inglis, Vijay Sundaresan
  • Patent number: 8694682
    Abstract: A virtual execution system that is configured to be used in a resource-constrained device. The resource-constrained device includes an operating system and an application program that includes instructions. The virtual execution system includes an execution engine that is configured to execute the application program, and to facilitate the compatibility of the application program with the operating system. Non-functional aspects characterize the instructions and the operating system. The execution engine has access to the non-functional aspects, and implements improvements during the execution of the application program based on the non-functional aspects.
    Type: Grant
    Filed: March 22, 2007
    Date of Patent: April 8, 2014
    Assignee: Microsoft Corporation
    Inventors: Frank Siegemund, Robert Sugar, Wolfgang Manousek
  • Publication number: 20140096116
    Abstract: A system and method for efficient compilation and invocation of function type calls in a virtual machine (VM), or other runtime environment, and particularly for use in a system that includes a Java Virtual Machine (JVM). In accordance with an embodiment, the system comprises a virtual machine for executing a software application; a memory space for the application byte code comprising callsites generated using a function type carrier; a bytecode to machine code compiler which performs MethodHandle invocation optimizations; a memory space for the compiled machine code; and a memory space for storing software objects as part of the software application. The system enables carrying the function type from the original MethodHandle to a callsite in the generated bytecode, including maintaining generics information for a function type acquired from a target function, and generating a callsite based on the generics information for the function object invocation.
    Type: Application
    Filed: September 16, 2013
    Publication date: April 3, 2014
    Applicant: Oracle International Corporation
    Inventor: Fredrik Öhrström
  • Publication number: 20140082598
    Abstract: An improved technique for inserting reference count code in a garbage collection technique. When there are two or more successor basic blocks to a basic block, a given variable is live at the entry of one or more of the successor basic blocks, and the variable is dead in another basic block S, a new basic block is inserted between the original basic block and a successor basic block in which the variable is dead, and RC? related to the variable is generated in the new basic block.
    Type: Application
    Filed: September 17, 2013
    Publication date: March 20, 2014
    Applicant: International Business Machines Corporation
    Inventor: Kazuaki Ishizaki
  • Publication number: 20140082597
    Abstract: Techniques are described for unifying static and dynamic compiler optimizations in source code bases. In an embodiment, a first compiler compiles source code of a target function to generate ahead-of-time (AOT) compiled machine code. A second compiler compiles the source code to generate an intermediate representation (IR) of the target function. In response to determining that the target function should be just-in-time (JIT) compiled, the AOT-compiled machine code for the target function is linked to the IR of the target function. During runtime, a physical processor executes AOT-compiled machine code of an executable program. When the target function is encountered for the first time, a JIT compiler is invoked. The JIT compiler generates JIT-compiled machine code for the target function. The physical processor executes the JIT-compiled machine code in place of the AOT-compiled machine code for the target function.
    Type: Application
    Filed: September 14, 2012
    Publication date: March 20, 2014
    Inventors: Hassan Chafi, Mason Chang, Eric Sedlar
  • Patent number: 8677329
    Abstract: A method and an apparatus that instructs a compiler server to build or otherwise obtain a compiled code corresponding to a compilation request received from an application are described. The compiler server may be configured to compile source codes for a plurality of independent applications, each running in a separate process, using a plurality of independent compilers, each running in a separate compiler process. A search may be performed in a cache for a compiled code that satisfies a compilation request received from an application. A reply message including the compiled code can be provided for the application, wherein the compiled code is compiled in direct response to the request, or is obtained from the cache if the search identifies in the cache the compiled code that satisfies the compilation request.
    Type: Grant
    Filed: June 3, 2009
    Date of Patent: March 18, 2014
    Assignee: Apple Inc.
    Inventors: Robert Beretta, Nicholas William Burns, Nathaniel Begeman, Phillip Kent Miller, Geoffrey Grant Stahl
  • Publication number: 20140075422
    Abstract: Under the present invention, a method for dynamically transforming the bytecode of Java Virtual Machine (JVM) bootstrap classes during program startup is provided. A JVM agent is used to intercept the execution flow before the execution of the special program startup-method of a JVM compliant computer program. The said JVM Agent executes code to transform the bytecode of the already loaded JVM bootstrap classes, storing the new set of modified bootstrap classes onto data storage. Subsequently, the JVM Agent intercepts all class loading events transforming the bytecode of classes declaring a special program statrup-method. In those classes the bytecode within the method body of the special class-initialize method, as defined in the present JVM class file format as “<clinit>”, is removed to avoid any side-effects in the program.
    Type: Application
    Filed: November 2, 2011
    Publication date: March 13, 2014
    Applicant: Syddansk Universitet
    Inventors: Michael Rasmussen, Allan Raundahl Gregersen, Bo Norregaard Jorgensen
  • Publication number: 20140068579
    Abstract: A method for executing native code in a distributed Java Virtual Machine (JVM) is disclosed herein. The method may include receiving, in a first thread executing in a remote execution container, a first native code-generated call, such as a Java Native Interface (JNI) call, to a second thread, the first call including a first array write request. The first call may be stored in an instruction cache and bundled with a second native code-generated call and sent to the second thread. The calls are unbundled and executed in the second thread. An opaque handle to an array returned by the second call is bundled with corresponding array data and returned to the first thread. The array data of the bundle is stored in a data cache and retrieved in response to requests for the array data addressed to the second thread. A corresponding computer program product is also disclosed.
    Type: Application
    Filed: March 15, 2013
    Publication date: March 6, 2014
    Applicant: INTERNATIONAL BUSINESS MACHINES CORPORATION
    Inventor: INTERNATIONAL BUSINESS MACHINES CORPORATION
  • Publication number: 20140068580
    Abstract: A computer-implementable method includes providing an instruction set architecture that comprises features to generate diverse copies of a program, using the instruction set architecture to generate diverse copies of a program and providing a virtual machine for execution of one of the diverse copies of the program. Various exemplary methods, devices, systems, etc., use virtualization for diversifying code and/or virtual machines to thereby enhance software security.
    Type: Application
    Filed: November 11, 2013
    Publication date: March 6, 2014
    Applicant: Microsoft Corporation
    Inventors: Bertrand Anckaert, Mariusz H. Jakubowski, Ramarathnam Venkatesan
  • Publication number: 20140053143
    Abstract: A computing device comprising a JIT compiler, an application, and a JavaScript Engine. The computing device is adapted to receive at least one identified portion of a JavaScript source code, replace original context specific reference values in the JavaScript with one or more placeholders, and generate a first JIT copy of the code. The computing device is adapted to create a description of the original context specific reference values having one or more requirements, store the description, access runtime information related to the original context specific reference values, compare the runtime information to the stored description, obtain new context-specific reference values, replace/update the placeholders with the new context-specific reference values, generate a second JIT copy of the at least one identified portion of the JavaScript source code comprising the new context-specific reference values, and execute the second JIT copy in the new execution context.
    Type: Application
    Filed: August 14, 2012
    Publication date: February 20, 2014
    Applicant: Qualcomm Innovation Center, Inc.
    Inventors: Derek J. Conrod, Subrato K. De, Dineel D. Sule
  • Patent number: 8650554
    Abstract: A mechanism is provided for improving single-thread performance for a multi-threaded, in-order processor core. In a first phase, a compiler analyzes application code to identify instructions that can be executed in parallel with focus on instruction-level parallelism and removing any register interference between the threads. The compiler inserts as appropriate synchronization instructions supported by the apparatus to ensure that the resulting execution of the threads is equivalent to the execution of the application code in a single thread. In a second phase, an operating system schedules the threads produced in the first phase on the hardware threads of a single processor core such that they execute simultaneously. In a third phase, the microprocessor core executes the threads specified by the second phase such that there is one hardware thread executing an application thread.
    Type: Grant
    Filed: April 27, 2010
    Date of Patent: February 11, 2014
    Assignee: International Business Machines Corporation
    Inventors: Elmootazbellah N. Elnozahy, Ahmed Gheith
  • Patent number: 8646050
    Abstract: Disclosed herein are systems, methods, and non-transitory computer-readable storage media for processing just-in-time code at a device that enforces a code signing requirement. The disclosure includes receiving computer code, where a portion of the code includes executable just-in-time code, at a device that enforces a code signing requirement; identifying the unsigned just-in-time executable portion of code; allocating a randomly selected memory region on the device for at least some of the unsigned just-in-time executable portion; and executing the unsigned just-in-time executable portion of code in the randomly selected memory region as if the unsigned just-in-time executable portion of code was signed computer code.
    Type: Grant
    Filed: January 18, 2011
    Date of Patent: February 4, 2014
    Assignee: Apple Inc.
    Inventors: Jacques Anthony Vidrine, Lionel Divyang Desai
  • Patent number: 8645930
    Abstract: Disclosed herein are systems, methods, and computer-readable storage media for obfuscating by a common function. A system configured to practice the method identifies a set of functions in source code, generates a transformed set of functions by transforming each function of the set of functions to accept a uniform set of arguments and return a uniform type, and merges the transformed set of functions into a single recursive function. The single recursive function can allocate memory in the heap. The stack can contain a pointer to the allocated memory in the heap. The single recursive function can include instructions for creating and explicitly managing a virtual stack in the heap. The virtual stack can emulate what would happen to the real stack if one of the set of functions was called. The system can further compile the source code including the single recursive function.
    Type: Grant
    Filed: January 4, 2010
    Date of Patent: February 4, 2014
    Assignee: Apple Inc.
    Inventors: Christopher Arthur Lattner, Tanya Michelle Lattner, Julien Lerouge, Ginger M. Myles, Augustin J. Farrugia, Pierre Betouin
  • Patent number: 8640097
    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: Grant
    Filed: March 16, 2009
    Date of Patent: January 28, 2014
    Assignee: Microsoft Corporation
    Inventors: Gilles Khouzam, Sam J. George, Brian J. Ewanchuk, Lawrence W. Olson, Michael R. Harsh
  • Patent number: 8631393
    Abstract: A process for performing a software task is detailed that includes preparing readable programming computer code and storing the computer code within the storage of a computer system in uncompiled form. The computer code is compiled to machine code in response to an executional call for the code. The machine code corresponding to the computer code is then executed to perform the software task. In addition to removing the conventional limitation of retaining only executable compiled software, only a portion of a larger total computer code necessary to perform the desired software task is compiled in response to an executional call from a user, request for another computer process, a prompt by an interfaced electronic instrument or a boot event.
    Type: Grant
    Filed: September 14, 2009
    Date of Patent: January 14, 2014
    Assignee: Vision Genesis, Inc.
    Inventor: Mark Pomponio
  • Publication number: 20140007060
    Abstract: Embodiments are directed to providing a generic software function for a plurality of data types in a distributed environment and to implementing type checking at compile time and at runtime. In one scenario, a computer system receives a portion of software code for a distributed software application, where the software code is written as a generic function in a computer programming language that supports reflection. The computer system presents a function signature at runtime to a just-in-time (JIT) compiler. The function signature describes which of multiple different input and output data types the generic function is configured to work with. The computer system also implements reflection at runtime to resolve each generic function to a function pointer after compilation by the JIT.
    Type: Application
    Filed: June 29, 2012
    Publication date: January 2, 2014
    Applicant: Microsoft Corporation
    Inventors: Richard A. Warren, Sudarshan Raghunathan, Adam P. Jenkins
  • Patent number: 8620991
    Abstract: Technologies for enabling a continuation based runtime to accept or reject external stimulus and, in addition, to determine if an external stimulus may be valid for processing at a later point in execution.
    Type: Grant
    Filed: August 1, 2012
    Date of Patent: December 31, 2013
    Assignee: Microsoft Corporation
    Inventors: Kenneth David Wolf, Justin David Brown, Karthik Raman, Nathan Christopher Talbert, Edmund Samuel Victor Pinto