Entries |
Document | Title | Date |
20080271002 | SYSTEM AND METHOD FOR PROVIDING A FILTERING CLASSLOADER IN A COMPUTER ENVIRONMENT - A system and method for providing a filtering classloader within a Java-based or other application environment. In one embodiment, a filtering classloader is placed between two other classloaders, e.g. between the system classloader and the application classloader. The filtering classloader is provided with a set of patterns which throw a “class not found exception” if an application makes a request for that class or package. The exception leads the application classloader to believe (perhaps correctly) that there is no class with that name in the system classloader. The application classloader then loads the class itself. The class may or may not exist in the system classloader; the filtering classloader in essence overrides any retrieval from that classloader in favor of the application classloader, for certain specified patterns of request. | 10-30-2008 |
20080295084 | Software protection apparatus and protection method thereof - A software protection apparatus and its protection method are disclosed. The software protection apparatus includes a storage unit and a processing unit. The storage unit has a program area and a data area. The program area is used to save an executable. The processing unit generates a reference pointer based on internal information of the executable, and the reference pointer then is saved to the program area or the data area. The processing unit then generates an algorithm based on at least one characteristic of the executable to save the algorithm to a specific position of the program area or the data area through the reference pointer, and employs the algorithm to perform an encoding action for the executable to generate a wrap program that is saved to the program area. When the wrap program is decoded, the reference pointer is obtained through a restore program to take the algorithm out. The wrap program then is restored to become the executable by using the algorithm. | 11-27-2008 |
20080301652 | APPARATUS AND METHOD FOR ACCELERATING JAVA TRANSLATION - An apparatus and method for accelerating Java translation are provided. The apparatus includes a lookup table which stores an lookup table having arrangements of bytecodes and native codes corresponding to the bytecodes, a decoder which generates pointer to the native code corresponding to the feed bytecode in the lookup table, a parameterized bytecode processing unit which detects parameterized bytecode among the feed bytecode, and generating pointer to native code required for constant embedding in the lookup table, a constant embedding unit which embeds constants into the native code with the pointer generated by the parameterized bytecode processing unit, and a native code buffer which stores the native code generated by the decoder or the constant embedding unit. | 12-04-2008 |
20080301653 | METHOD AND APPARATUS FOR INCREASING TASK-EXECUTION SPEED - Provided are a method and apparatus for increasing task-execution speed, and, more particularly, a method and apparatus for increasing task-execution speed by compiling code to bytecodes, and executing native code in units of blocks instead of bytecodes, in which a block is a group of a series of bytecodes. The apparatus includes a receiving unit which receives a bytecode, a control unit which identifies whether the received bytecode is the last bytecode of a block, and a transmitting unit which transmits an address of a first native code of one or more native codes that correspond to one or more bytecodes included in the block based on the identification result. | 12-04-2008 |
20080307401 | Scripting Bridge - A scripting bridge allows a developer to automatically build glue classes to access a scriptable application with standard method calls written in a language such as Objective-C. The Objective-C code sends properly formed Apple events automatically (or events according to some other event protocol), so that the developer is not required to have any knowledge of the scripting language of the target application. Classes can be created dynamically at run-time, including dynamic creation of methods within those classes. Lazy evaluation is employed to avoid unnecessary inter-process communication traffic. | 12-11-2008 |
20090037891 | APPARATUS TO GUARANTEE TYPE AND INITIALIZATION SAFETY IN MULTITHREADED PROGRAMS - A method and apparatus to guarantee type safety in multithreaded programs, and to guarantee initialization safety in well-behaved multithreaded programs. A plurality of bytecodes representing a program are received and examined to identify bytecodes defining object creation operations and object initialization operations. Upon execution of the plurality of bytecodes, memory barrier operations are performed subsequent to the performance of both the object creation operations and the object initialization operations. This guarantees type safety, and further guarantees initialization safety if the program is well-behaved. Optimization algorithms may also be applied in the compilation of bytecodes to improve performance. | 02-05-2009 |
20090049432 | METHOD AND APPARATUS TO IMPROVE THE RUNNING TIME OF SHORT RUNNING APPLICATIONS BY EFFECTIVELY INTERLEAVING COMPILATION WITH COMPUTATION IN A JUST-IN-TIME ENVIRONMENT - 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. | 02-19-2009 |
20090064113 | METHOD AND SYSTEM FOR DYNAMIC LOOP TRANSFER BY POPULATING SPLIT VARIABLES - A method that provides for dynamic loop transfer for a method having a first set of instructions being executed by an interpreter is provided. An execution stack includes slots for storing a value of each local variable known to each subroutine while the subroutine is active. The method comprises suspending execution at a point for which a current execution state can be captured from the execution stack; assigning the value in each slot of the execution stack to a corresponding slot of an array of values; scanning the first set of instructions to identify a data type for local variable that is not known in the current execution state and shares a slot in the execution stack with a local variable that is known; and generating a second set of instructions for the method coded to be initially executed to declare each local variable that is known in the current execution state and each local variable for which a data type was identified, assign each declared variable with the value assigned to the slot in the array that corresponds to the slot of the execution stack in which the value of the variable is stored during execution of the first set of instructions, and branch to a target point in the second set of instructions that corresponds to the point at which execution was suspended. | 03-05-2009 |
20090064114 | SYSTEMS, METHODS, AND COMPUTER PRODUCTS FOR AUTOMATED INJECTION OF JAVA BYTECODE INSTRUCTIONS FOR JAVA LOAD TIME OPTIMIZATION VIA RUNTIME CHECKING WITH UPCASTS - 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. | 03-05-2009 |
20090070752 | METHOD AND SYSTEM FOR OPTIMIZATION OF AN APPLICATION - A method is provided for creating a virtual machine image. According to the method, at least one application is provided on a computer system. After the application is provided on the computer system, at least one optimization of the application is performed based on a runtime environment of the application to produce an optimized application, and the optimized application and at least a portion of the runtime environment are packaged in a virtual machine image. In one embodiment, the computer system is a virtual machine. Also provided is a system for creating a virtual machine image. | 03-12-2009 |
20090089766 | Automatically Modifying a Native Code Module Accessed from Virtual Machine Bytecode to Determine Execution Information - A system and method for automatically modifying a native code module accessed in a user software application are described herein. The user software application may include virtual machine bytecode. Access to the native code module may be detected during execution of the virtual machine bytecode. The native code module may be automatically modified by adding instrumentation code to determine various types of information regarding execution of the native code module, and the access may be directed to the modified native code module. | 04-02-2009 |
20090089767 | METHOD AND SYSTEM FOR IMPLEMENTING A JUST-IN-TIME COMPILER - A method for implementing a just-in-time compiler involves obtaining high-level code templates in a high-level programming language, where the high-level programming language is designed for compilation to an intermediate language capable of execution by a virtual machine, and where each high-level code template represents an instruction in the intermediate language. The method further involves compiling the high-level code templates to native code to obtain optimized native code templates, where compiling the high-level code templates is performed, prior to runtime, using an optimizing static compiler designed for runtime use with the virtual machine. The method further involves implementing the just-in-time compiler using the optimized native code templates, where the just-in-time compiler is configured to substitute an optimized native code template when a corresponding instruction in the intermediate language is encountered at runtime. | 04-02-2009 |
20090089768 | Data management for dynamically compiled software - Method, apparatus and system are described to perform a data management. In some embodiments, a software application is dynamically compiled, data of the dynamically compiled software application is stored in a first region of a memory and instructions of the dynamically compiled software application are stored in a second region of the memory. | 04-02-2009 |
20090144710 | Method and Apparatus for Transforming Java Native Interface Function Calls into Simpler Operations During Just-In-Time Compilation - A method, apparatus, and computer instructions are provided for transforming Java Native Interface function calls to constants, internal just-in-time compiler operations or simpler intermediate representation. A compiler generates a plurality of intermediate representations for a plurality of native interface function calls. During inlining of native code, matching is performed on each native function call (against this list) and a list of native interface function calls is generated. For each native interface function call, a JIT call transformer attempts to replace the native interface function call with a constant, internal just-in-time compiler operation or a simpler intermediate representation depending on the type of native interface function call. | 06-04-2009 |
20090150873 | INFORMATION PROCESSING APPARATUS AND METHOD - A data processing apparatus has an interpreter environment which dynamically executes programs configured based on a command set defined independently from a native command group, in a native environment. In the native environment input data streams are divided into multiple stages and intermediate data streams are generated for each of the states. In the interpreter environment the intermediate data streams are subjected to filtering processing and filtered data streams are generated. The intermediate data streams are handed to a filter via a layer interface. A data stream management attribute module extracts information of items specified beforehand from the intermediate data streams, and controls handing over of the intermediate data streams to the filter, based on the contents of the information. Thus, whether or not to apply filtering processing can be controlled based on description in the data streams, thereby realizing efficient data stream processing. | 06-11-2009 |
20090172652 | Method And Apparatus For Portable Stub Generation - Method and apparatus for automatically generating intermediate-level interfaces between program methods written in a platform-independent language and program methods written in a native language. A portable stub generator generates stubs in an intermediate, tokenized internal representation. The stub generator is portable across platforms as the stubs it generates are not platform-specific. In addition, the generated stubs are available to the compiler at intermediate compilation stages rather than at the backend compilation stage, and thus may be optimized together with the rest of the platform-independent code, and also may be inlined. The portable stub generator may be directed at virtual machine environments. An exemplary virtual machine environment in which the stub generator may be implemented is the Java™ Virtual Machine (JVM). In JVMs, Java™ is the platform-independent language, and Java™ bytecode the tokenized internal representation. In a JVM, the stubs may be generated in accordance with Java™ Native Interface (JNI). | 07-02-2009 |
20090172653 | Compiling and Inserting Code Snippets At Runtime - Method, computer readable medium, and system for specifying before-compiled code, compiling the before-compiled code into a compiled code snippet, specifying an insertion point in a compiled code block of a computer program, and inserting the compiled code snippet into the compiled code block at the specified insertion point while the computer program is running. | 07-02-2009 |
20090193403 | DYNAMIC CREATION OF CLIENT-SIDE ENVIRONMENT FOR PROBLEM ANALYSIS - The dynamic creation of a client-side environment for problem analysis includes the delivery and installation of a cohesive file structure to a client-side machine, the cohesive file structure including a data structure containing data files and an analyzer tool. | 07-30-2009 |
20090193404 | METHOD AND APPARATUS FOR INLINING NATIVE FUNCTIONS INTO COMPILED JAVA CODE - A method, apparatus, and computer instructions are provided for inlining native functions into compiled Java code. A conversion engine is provided by the present invention for converting the intermediate representation of native functions to the just-in-time (JIT) compiler's intermediate representation. With the converted intermediate representation, an inliner recursively inlines the converted JIT compiler's intermediate representation into the native callsite to remove the need of invoking the native function and subsequent native calls made by the function. The inlining process continues until either a call to an opaque function is encountered or until a JIT compiler intermediate representation growth limits are reached. The inliner also replaces calls to most native functions that are non-inlineable or opaque with calls to synthesized native functions that provide access to native libraries containing implementations of the original non-inlineable calls. | 07-30-2009 |
20090222802 | DECLARATIVE PINNING - A system and method is provided for efficiently pinning references to the managed heap. The system and method allow for references to managed objects to be declared as pinned during a call to unmanaged code. The references are then reported as pinned to a garbage collector in response to invocation of a garbage collection service. The reference can be declared as pinned by a programmer within the source code or automatically invoked at run-time based on an unsafe condition. The garbage collection service will not move or relocate objects that are referenced by the active pinned local variables. If a garbage collection does not occur, the fact that the local variables are declared pinned is ignored. | 09-03-2009 |
20090235240 | METHOD FOR JIT COMPILER TO OPTIMIZE REPETITIVE SYNCHRONIZATION - 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. | 09-17-2009 |
20090249317 | XSLT-SPECIFIC JIT COMPILER - An Extensible Stylesheet Language Transformation (XSLT) processing environment receives an XSLT style sheet and an Extensible Markup Language (XML) input document. The XSLT style sheet is compiled into XSL byte code fragments. A just-in-time (JIT) compiler in the XSLT processing environment compiles the XSL byte code fragments into native code. The native code is executed to transform the XML input document into one or more XML output documents. | 10-01-2009 |
20090271773 | METHOD OF AND INSTRUCTION SET FOR EXECUTING OPERATIONS ON A DEVICE - A method for executing operations on a device includes executing one or more bytecode language instructions associated with a mobile agent. The mobile agent includes a state of a virtual machine and the bytecode language includes instructions such WARP, MESG, ESEL, ALERT, BROWSE, CAPS, SLEEP, and GPS, | 10-29-2009 |
20090276764 | HIGH-LEVEL HYPERMEDIA SYNTHESIS FOR ADAPTIVE WEB - A process for dynamically generating browser-ready code from a high-level code description of a web page written in a first predefined language having one or more adaptive features and from one or more constraints associated with a request for such browser-ready code. | 11-05-2009 |
20090320004 | Test Instrument Graphical User Interface - A flexible user interface that takes advantage of the data binding architecture both at compilation and post compilation is described. The architecture provides maximum flexibility to the end user for customization of instrument user interfaces while affording the manufacturer basic control on look and feel to ensure functionality and important aspects of brand appearance. | 12-24-2009 |
20100070957 | System and Method for Sharing Objects Between Applications in a Virtual Runtime Environment - The techniques and mechanisms described herein are directed at sharing objects between applications executing in a virtual runtime environment. The techniques include compiling a cpu-independent file to create executable instructions that are associated with an application that is executable in a virtual runtime environment. A constructor associated with a shareable class defined within the cpu-independent file is executed to create an instance of a shareable object. The shareable object is then persisted in a manner such that other applications executing in the virtual runtime environment may access the shareable object. The technique may be performed during pre-JIT compilation or just-in-time compilation of the cpu-independent file. The execution of the constructor is performed at a restricted security level that prevents access to changeable information when generating static data for the static members of the shareable object. | 03-18-2010 |
20100095284 | CACHING RUNTIME GENERATED CODE - A program entity that generates code but that does not perturb global state is identified. Code produced by the identified program entity can be assigned an identifier and cached the first time it is executed. Subsequent executions of the program entity can eliminate generation of the code and/or translation of the generated code into native binary code. The runtime generated code and native binary code can be cached in a machine-wide cache, or can be added to the metadata of the assembly generated from the source code of the program entity. | 04-15-2010 |
20100115501 | DISTRIBUTED JUST-IN-TIME COMPILATION - A method of performing distributed just-in-time compilation includes sending a first request message from a client platform to a dedicated compilation server requesting just-in-time compilation of a bytecode sequence generated from a set of code for a source program executing on the client platform; compiling the bytecode sequence at the compilation server into a set of machine code instructions executable by the client platform; storing the set of machine code instructions in a repository managed by the dedicated compilation server; sending a notification message indicating that the set of machine code instructions are available from the dedicated compilation server to the client platform; sending a second request message from the client platform to the dedicated compilation server requesting the set of machine code instructions; and accessing the repository to send the set of machine code instructions from the dedicated compilation server to the client platform. | 05-06-2010 |
20100115502 | Post Processing of Dynamically Generated Code - A system and method are disclosed for improving the performance of compiled Java code. Java source code is annotated and then compiled by a Java compiler to produce annotated Java bytecode, which in turn is compiled by a just-in-time (JIT) compiler into annotated native code. The execution of the annotated native code is monitored with a patching agent, which captures the annotated native code as it is being executed. The captured native code is then provided through an application program interface to a dynamic linkage module, which in turn provides the captured native code to a user or to an application plug-in module for modifications. The modifications are saved as a patch. The annotated native code is then re-executed and the modifications to the annotated native code are applied as a patch by the patching agent. | 05-06-2010 |
20100122242 | Optimistic Selection of Best Performing Generated Code of Multiple ISA Systems - 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. | 05-13-2010 |
20100138817 | IN-PLACE FUNCTION MODIFICATION - Modifying computer program code can be performed at or immediately prior to runtime of the computer code in a runtime environment of a common language infrastructure of a language-neutral framework for developing and executing computer applications. A function in a computer program can be modified at runtime by injecting arbitrary code, while mitigating an alteration of a program's call stack. A just-in-time compilation service is used to compile and execute intermediate language code of the program, and the runtime environment sends callback functions to an event-based profiling agent (profiler) attached to the runtime environment. The profiler can trap desired functions, as determined by configuration data, and inject modification code from stub methods in a stub assembly file. The modified code can be sent back to the runtime environment to be executed by the just-in-time compilation service. | 06-03-2010 |
20100192137 | METHOD AND SYSTEM TO IMPROVE CODE IN VIRTUAL MACHINES - A computer readable storage medium is provided having executable instructions stored thereon for executing a method of operating a computing system, in which an inner virtual machine translates first instructions, which are supported by the inner virtual machine, into second instructions, which are supported by an outer virtual machine. The method includes encoding, in the inner virtual machine, third instructions into the second instructions into which the first instructions are translated, the third instructions including hints for facilitating an execution of the second instructions, and, in an event the hints are supported by the outer virtual machine, initiating the execution of the second instructions while utilizing the hints by the outer virtual machine to achieve an increased efficiency of the execution of the second instructions. | 07-29-2010 |
20100218174 | DYNAMIC COMPILING AND LOADING AT RUNTIME - A compiler is loaded by a computing device using an evaluation function that is included in a program in a compiled form. The evaluation function causes the compiler to compile source code for the program, wherein the source code includes new instructions that are uncompiled, and wherein compiling the source code generates compiled code that includes the new instructions. The evaluation function loads the compiled code into memory, retrieves the new instructions, and executes the new instructions. The evaluation function may perform these operations during runtime of the program that includes the evaluation function. | 08-26-2010 |
20100235820 | HOSTED APPLICATION PLATFORM WITH EXTENSIBLE MEDIA FORMAT - 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. | 09-16-2010 |
20100299660 | DYNAMIC BINDING DIRECTED BY STATIC TYPES - A static type, called “dynamic”, is introduced into a statically bound programming language. An expression or subexpression that is defined as a static type called “dynamic” in the source code of a program written in the statically bound programming language, is bound based on its runtime type instead of on its compile time type. Binding can be performed based on a mixture of compile time and runtime types that are based on the specification of types of expressions in source code. This type of binding is called hybrid binding. Operations are bound using the runtime type of constituent expressions (i.e., the runtime type of a receiver, an argument, or an operand) typed as dynamic and the compile time type of static constituents. If any constituent expression of an operation is dynamic, binding occurs at runtime instead of at compile time. | 11-25-2010 |
20100318977 | JIT COMPILATION WITH CONTINOUS APU EXECUTION - A multiprocessor computing system includes a direct memory access (DMA) engine, a main memory and a host processor including a just-in-time compiler (JIT) that converts bytecode into machine code in discrete executable superblocks (XSBs). The system also includes a system bus coupled to the host processor, the DMA engine and the main memory and allowing communication there between and an auxiliary processing unit (APU) coupled to the system bus and having a local memory, the APU receiving a first XSB from the JIT and storing it in the local memory and loading the one or more next XSBs for execution found in the header of the first XSB into the local memory via the DMA engine. | 12-16-2010 |
20100318978 | REGISTRATION METHOD FOR SUPPORTING BYTECODE MODIFICATION - A method is described that comprises receiving from a classfile registration information. The registration information comprises a class name and a different method name for each of the class's methods. Each of the methods are modified with at least one additional byte code instruction to cause, for its respective method, a plug-in module's handler method to provide output function treatment for the respective method. Also, a plug-in pattern is referred to in order to determine which of a plurality of plug-in modules are appropriate for each of the class's methods. The plug-in pattern lists for each of the plug-in modules those of the methods that are to be handled with its corresponding output function treatment. | 12-16-2010 |
20110035735 | OPTIMIZING JUST-IN-TIME COMPILATION IN A NETWORK OF NODES - A bytecode construction, a method, and a system for optimizing just in time compilation. The bytecode includes several regions wherein a region is a logical sequence of one or more bytecode blocks and the bytecode is annotated with region hints embedded therein. The region hints have a bytecode structure and are designed for instructing a just-in-time, or JIT, runtime environment for JIT compilation of the regions by JIT compilers implemented at nodes of a network. A method and a system for implementing the bytecode construction are also presented. | 02-10-2011 |
20110067013 | SYSTEMS AND METHODS FOR DEFERRING SOFTWARE IMPLEMENTATION DECISIONS UNTIL LOAD TIME - A software development method defers certain implementation details until load time. A programmer first annotates, in source code, a selected set of software components using metadata (such as Java-style annotations) that define one or more criteria—e.g., criteria relating to the state of the target hardware platform, the capabilities of the platform, or arbitrary user input. The annotated source code files are then compiled to create one or more intermediate code files (e.g., Java bytecode files). During load time of the resulting intermediate code files, one or more of the selected set of software components are loaded from the intermediate code files based on the criteria. | 03-17-2011 |
20110119659 | RUNTIME MACHINE SUPPORTED METHOD LEVEL CACHING - A computer system includes a disk space comprising at least one type of memory and an operating system for controlling allocations and access to the disk space. A runtime machine runs applications through at least one of the operating system or directly on at least one processor of the computer system. In addition, the runtime machine manages a selected runtime disk space allocated to the runtime machine by the operating system and manages a separate method cache within the selected virtual disk space. The virtual 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. | 05-19-2011 |
20110173597 | EXECUTION OF DYNAMIC LANGUAGES VIA METADATA EXTRACTION - Methods and devices for executing scripts written in a dynamic scripting language include parsing scripts in two stages, a pre-parse using a simplified grammar to generate script metadata regarding the high level structure of the script, and a full parse using the grammar and syntax of the dynamic scripting language and generated script metadata. The generated metadata may describe the high level structure that is present in the language of the script such as functions, object methods, and a top level call graph. The script metadata may be used during the full parse to determine the parts of the code to be fully parsed. The aspects minimize processing time spent in the parsing at run-time, and may eliminate processing required to interpret or compile sections of code that will not be executed. Script metadata as well as results of full parsing may also be cached to provide further processing efficiencies. | 07-14-2011 |
20110202907 | METHOD AND SYSTEM FOR OPTIMIZING CODE FOR A MULTI-THREADED APPLICATION - In modern multi-threaded environments, threads often work cooperatively toward providing collective or aggregate throughput for an application as a whole. Optimizing in the small for “thread local” common path latency is often but not always the best approach for a concurrent system composed of multiple cooperating threads. Some embodiments provide a technique for augmenting traditional code emission with thread-aware policies and optimization strategies for a multi-threaded application. During operation, the system obtains information about resource contention between executing threads of the multi-threaded application. The system analyzes the resource contention information to identify regions of the code to be optimized. The system recompiles these identified regions to produce optimized code, which is then stored for subsequent execution. | 08-18-2011 |
20110202908 | METHOD AND APPARATUS FOR DYNAMICALLY GENERATING MACHINE CODE - A method and an apparatus for dynamically generating a machine code is provided, including: sequentially storing generated instructions in a first buffer; sequentially storing data in a second buffer, when the generated instructions reference data; and flushing the first buffer and the second buffer to executable code when a distance between an instruction referencing the data and the data has reached a limit of an offset range of the data-referencing instruction. | 08-18-2011 |
20110246974 | DYNAMIC COMPILER PROGRAM, DYNAMIC COMPILING METHOD AND DYNAMIC COMPILING DEVICE - 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. | 10-06-2011 |
20110265067 | Automatic Parallelization in a Tracing Just-in-Time Compiler System - 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). | 10-27-2011 |
20110271262 | Method and apparatus for detecting transient faults via dynamic binary translation - 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. | 11-03-2011 |
20120005661 | Method for Just-in-Time Compilation and Execution of Code Blocks within Discrete Event Simulations - 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. | 01-05-2012 |
20120096447 | PROFILER FOR EXECUTING COMPUTER PROGRAM - 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. | 04-19-2012 |
20120117550 | Method, computer program and device for providing security for intermediate programming code for its execution by a virtual machine - The invention in particular relates to provide security for intermediate programming code for its execution by a virtual machine. After having received ( | 05-10-2012 |
20120131562 | METHOD AND APPARATUS FOR UPGRADING VIRTUAL MACHINE IN A PORTABLE TERMINAL - 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. | 05-24-2012 |
20120144377 | METHOD AND APPARATUS TO IMPROVE THE RUNNING TIME OF SHORT RUNNING APPLICATIONS BY EFFECTIVELY INTERLEAVING COMPILIATION WITH COMPUTATION IN A JUST-IN-TIME ENVIRONMENT - 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. | 06-07-2012 |
20120151458 | SYSTEM AND METHOD FOR REMOVAL OF ARRAYCOPIES IN JAVA BY CUTTING THE LENGTH OF ARRAYS - 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. | 06-14-2012 |
20120159464 | Systems and Methods for Caching Compute Kernels For An Application Running on a Parallel-Processing Computer System - 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. | 06-21-2012 |
20120167067 | BATCH DISPATCH OF JAVA NATIVE INTERFACE CALLS - 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. | 06-28-2012 |
20120185834 | SYSTEM AND METHOD FOR EFFICIENT COMPILATION AND INVOCATION OF FUNCTION TYPE CALLS - 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). While current techniques in Java for implementing function types using interface calls are neither efficient nor flexible, embodiments of the present invention address this problem by providing a system and method for creating function references (MethodHandles) to a target function, invoking efficiently on such a MethodHandle from a callsite, and reusing the existing generics infrastructure within the Java language to carry the types during javac compile time from the target function to the callsite. 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. | 07-19-2012 |
20120204162 | METHODS AND APPARATUSES FOR FACILITATING EXECUTION OF APPLICATIONS REQUIRING RUNTIME COMPILATION - 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. | 08-09-2012 |
20120222022 | Instantiating an Interface or Abstract Class in Application Code - Mechanisms for instantiating an interface or abstract class in application code are provided. An object-oriented programming language is extended such that interfaces and abstract classes can be instantiated in application code without a concrete class specified. Metadata is defined which maps each interface or abstract class instantiation in the application code to a concrete class to be used either by the compiler at build time, or the virtual machine at runtime. Once the appropriate concrete class is determined from the metadata, the class is instantiated with a conventional class loader. The metadata may be provided, for example, as a separate file, such as a markup language file, defined with a virtual machine switch, as annotations in the application code, or the like. | 08-30-2012 |
20120233602 | PROFILE DRIVEN MULTICORE BACKGROUND COMPILATION - Idle processor cores can be used to compile methods that are likely to be executed by a program based on profile data that is captured during one or more previous executions. Methods that are determined by the profile data to be likely to be used can be compiled eagerly on one or more background threads. Transparency can be achieved by ensuring that module load order is not altered because of the background threads by recording the state of loaded modules after each profiled compilation, persisting that data, and waiting to eagerly compile a method until the method to be compiled and all its dependencies has been loaded by the executing program. | 09-13-2012 |
20120233603 | APPARATUS AND METHOD FOR ACCELERATING JAVA TRANSLATION - An apparatus and method for accelerating Java translation are provided. The apparatus includes a lookup table which stores an lookup table having arrangements of bytecodes and native codes corresponding to the bytecodes, a decoder which generates pointer to the native code corresponding to the feed bytecode in the lookup table, a parameterized bytecode processing unit which detects parameterized bytecode among the feed bytecode, and generating pointer to native code required for constant embedding in the lookup table, a constant embedding unit which embeds constants into the native code with the pointer generated by the parameterized bytecode processing unit, and a native code buffer which stores the native code generated by the decoder or the constant embedding unit. | 09-13-2012 |
20120266147 | RUNNING MULTIPLE COPIES OF NATIVE CODE IN A JAVA VIRTUAL MACHINE - 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. | 10-18-2012 |
20120304160 | Systems and Methods for Run-Time Interception of Software Methods - The present disclosure involves systems and computer-implemented methods for installing software hooks. One process includes identifying a target method and a hook code, where the hook code is to execute instead of at least a portion of the target method, and wherein the target method and the hook code are executed within a managed code environment. A compiled version of the target method and a compiled version of the hook code are located in memory, where the compiled versions of the target method and the hook code are compiled in native code. Then, the compiled version of the target method is modified to direct execution of at least a portion of the compiled version of the target method to the compiled version of the hook code. The non-compiled version of the target method may be originally stored as bytecode. The managed code environment may comprise a managed .NET environment. | 11-29-2012 |
20120324429 | Selectable Dual-Mode JIT Compiler for SIMD Instructions - 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. | 12-20-2012 |
20130036410 | Real-Time Temperature Sensitive Machine Level Code Compilation And Execution - Methods, apparatuses, and computer program products for real-time temperature sensitive machine level code compilation and execution are provided. Embodiments include compiling and executing, by a just-in-time (JIT) compiler, machine level code; during execution of the machine level code, determining, by the JIT compiler, an execution temperature for the machine level code, including reading temperature measurements from one or more processor temperature sensors; based on the determined execution temperature, identifying, by the JIT compiler, a portion of the machine level code that, when executed, caused temperature measurements of one or more processor temperature sensors to exceed a predetermined threshold temperature; recompiling, by the JIT compiler, the machine level code including modifying the identified portion to generate a new execution temperature that is lower than the previously determined execution temperature; and executing, by the JIT compiler, the recompiled machine level code. | 02-07-2013 |
20130081005 | Memory Management Parameters Derived from System Modeling - Optimized memory management settings may be derived from a mathematical model of an execution environment. The settings may be optimized for each application or workload, and the settings may be implemented per application, per process, or with other granularity. The settings may be determined after an initial run of a workload, which may observe and characterize the execution. The workload may be executed a second time using the optimized settings. The settings may be stored as tags for the executable code, which may be in the form of a metadata file or as tags embedded in the source code, intermediate code, or executable code. The settings may change the performance of memory management operations in both interpreted and compiled environments. The memory management operations may include memory allocation, garbage collection, and other related functions. | 03-28-2013 |
20130086565 | LOW-LEVEL FUNCTION SELECTION USING VECTOR-WIDTH - A medium and method is disclosed for compiling vector programs. A compiler receives program code that includes a function invocation. The compiler determines the vector width of a target computer system and creates a width-specific executable version of the program code by mapping the function invocation to a width-specific implementation of the function. The width-specific implementation corresponds to the vector width of the target computer system. | 04-04-2013 |
20130086566 | VECTOR WIDTH-AWARE SYNCHRONIZATION-ELISION FOR VECTOR PROCESSORS - A medium, method, and apparatus are disclosed for eliding superfluous function invocations in a vector-processing environment. A compiler receives program code comprising a width-contingent invocation of a function. The compiler creates a width-specific executable version of the program code by determining a vector width of a target computer system and omitting the function from the width-specific executable if the vector width meets one or more criteria. For example, the compiler may omit the function call if the vector width is greater than a minimum size. | 04-04-2013 |
20130091496 | OPTIMIZING JUST-IN-TIME COMPILING FOR A JAVA APPLICATION EXECUTING ON A COMPUTE NODE - Methods, systems, and products are disclosed for optimizing just-in-time (‘JIT’) compiling for a Java application executing on a compute node, the compute node having installed upon it a Java Virtual Machine (‘JVM’) capable of supporting the Java application, that include: identifying, by an application manager, a particular portion of the Java application; assigning, by the application manager, a JIT level to the particular portion of the Java application; and jitting, by the JVM installed on the compute node, the particular portion of the Java application in dependence upon the JIT level assigned to that particular portion of the Java application. | 04-11-2013 |
20130104111 | REAL-TIME TEMPERATURE SENSITIVE MACHINE LEVEL CODE COMPILATION AND EXECUTION - Methods, apparatuses, and computer program products for real-time temperature sensitive machine level code compilation and execution are provided. Embodiments include compiling and executing, by a just-in-time (JIT) compiler, machine level code; during execution of the machine level code, determining, by the JIT compiler, an execution temperature for the machine level code, including reading temperature measurements from one or more processor temperature sensors; based on the determined execution temperature, identifying, by the JIT compiler, a portion of the machine level code that, when executed, caused temperature measurements of one or more processor temperature sensors to exceed a predetermined threshold temperature; recompiling, by the JIT compiler, the machine level code including modifying the identified portion to generate a new execution temperature that is lower than the previously determined execution temperature; and executing, by the JIT compiler, the recompiled machine level code. | 04-25-2013 |
20130125102 | APPLICATION SERVER - In dynamic compilation, timing of compiling is set for each method in accordance with information such as an execution frequency for each method so that methods having a large influence on the execution performance of the entire application program are compiled earlier. Thereby, the balance of execution is optimized between execution by an interpreter and execution based on native codes, and the execution performance immediately after the activation of an application program becomes stable. | 05-16-2013 |
20130139133 | INFORMATION PROCESSING APPARATUS AND PROGRAM AND METHOD FOR ADJUSTING INITIAL ARRAY SIZE - An adjustment apparatus includes a storage device, an execution target program, an execution unit, a first API, a second API, a profiler, and a dynamic compiler. The execution unit interprets the program, and calls and executes a function of an API in response to the API description. The first and second API are callable by the execution unit, to respectively allocate an array of a predetermined size, and extend the array. The first and second APIs are converted into code to store an array allocation call context of the pre-extension array into a profile information storage area of the allocated array. The profiler profiles access to arrays. The dynamic compiler inline-expands an array allocation call context included in a code part to be dynamically compiled and embeds an array size determined based on context based access information, as an allocation initial size of the array, into the code part. | 05-30-2013 |
20130152063 | SYSTEM AND METHOD FOR EARLY PLATFORM DEPENDENCY PREPARATION OF INTERMEDIATE CODE REPRESENTATION DURING BYTECODE COMPILATION - 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. | 06-13-2013 |
20130159983 | OPTIMIZING JUST-IN-TIME COMPILING FOR A JAVA APPLICATION EXECUTING ON A COMPUTE NODE - Methods, systems, and products are disclosed for optimizing just-in-time (‘JIT’) compiling for a Java application executing on a compute node, the compute node having installed upon it a Java Virtual Machine (‘JVM’) capable of supporting the Java application, that include: identifying, by an application manager, a particular portion of the Java application; assigning, by the application manager, a JIT level to the particular portion of the Java application; and jitting, by the JVM installed on the compute node, the particular portion of the Java application in dependence upon the JIT level assigned to that particular portion of the Java application. | 06-20-2013 |
20130174135 | CREATING A SHOCKWAVE FLASH FILE - A system identifies a first portion of a project as static code. The system compiles the static code to create compiled static code. The system identifies a second portion of the project as dynamic code that requires a plurality of compilations for a plurality of sub portions of the dynamic code to create compiled dynamic code. The system converts a subset of the dynamic code into dynamic byte code. The dynamic byte code reduces the plurality of dynamic code compilations necessary to create a SWF file. The system then merges the compiled static code and the dynamic byte code to create the SWF file. | 07-04-2013 |
20130198728 | METHOD AND APPARATUS FOR AVOIDING REGISTER INTERFERENCE - 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. | 08-01-2013 |
20130247017 | METHOD AND SYSTEM FOR GENERATING CODE - A computer implemented method and system to generate final code for execution in a runtime environment, the method including creation, via a compiler, of intermediate code from destination source code, wherein the destination source code has been compiled from original source code which includes at least one jump instruction, by omitting the at least one jump instruction, the destination source code existing in a destination programming language and the original source code in a source programming language, loading the intermediate code into an intermediate code manipulation unit, and creation, via the intermediate code manipulation unit, of the final code from the intermediate code, wherein the creation comprises an insertion of at least one jump statement into the final code, and wherein the inserted at least one jump statement is functionally equivalent to the at least one omitted jump instruction. | 09-19-2013 |
20130290941 | CERTIFICATION FOR FLEXIBLE RESOURCE DEMAND APPLICATIONS - Technologies are generally provided for optimizing virtual machine performances at a datacenter and managing sudden resource demand changes by co-residing applications on same virtual machines through a flexible resource demand certification approach. A flexible resource demand certificate may be generated for applications including predetermined operating compilation architectures that run well but have different resource demands. A Just In Time (JIT) compiler may be directed to selected target settings for a combination of operational parameter settings such that the co-residing applications can share resources without overloading system resources. Applications to be migrated to a new datacenter or a new virtual machine at a datacenter may be assigned and adjusted according to their and potential co-residing applications' certificates providing optimized resource usage. | 10-31-2013 |
20130311980 | SELECTIVE COMPILING METHOD, DEVICE, AND CORRESPONDING COMPUTER PROGRAM PRODUCT - A method and compiling device are provided for compiling a software application to be executed on a virtual machine of a physical platform. The software application originally is in the form of a set of codes to be compiled. The method includes a phase of selectively compiling the set of codes to be compiled, outputting a compiled application including a first application part which is executed by the virtual machine using commands from the virtual machine, and a second application part including binary commands which can be executed directly on the physical platform. | 11-21-2013 |
20130346952 | METHOD AND APPARATUS FOR CODE PERFORMANCE ANALYSIS - Aspects of the disclosure provide a method for profiling. The method includes collecting symbol information to map traces of codes in a program to memory addresses storing corresponding native codes that are dynamically compiled from the traces of codes during an execution of the program, and making the symbol information available after the dynamic compilation to analyze profiling data sampled during the execution of the program. | 12-26-2013 |
20140007060 | IMPLEMENTATION OF DISTRIBUTED METHODS THAT SUPPORT GENERIC FUNCTIONS | 01-02-2014 |
20140053143 | CONTEXT-SPECIFIC OPTIMIZED CODE - 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. | 02-20-2014 |
20140068579 | JAVA NATIVE INTERFACE ARRAY HANDLING IN A DISTRIBUTED JAVA VIRTUAL MACHINE - 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. | 03-06-2014 |
20140068580 | Visualization for Diversified Tamper Resistance - 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. | 03-06-2014 |
20140075422 | METHOD FOR DYNAMICALLY TRANSFORMING THE BYTECODE OF JAVA VIRTUAL MACHINE BOOTSTRAP CLASSES - 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 “”, is removed to avoid any side-effects in the program. The special program startup-method in the said classes is transformed to insert bytecode at the beginning of the method to invoke a special callback method, as declared within the said JVM Agent, passing as parameters to the callback method the main arguments as passed to the JVM upon program startup. Subsequently, when the said callback method intercepts the execution flow it starts a second JVM instance passing to it the obtained input parameters, the main method arguments as well as a JVM input argument to use the stored set of modified bootstrap classes. | 03-13-2014 |
20140082597 | UNIFYING STATIC AND DYNAMIC COMPILER OPTIMIZATIONS IN SOURCE-CODE BASES - 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. | 03-20-2014 |
20140082598 | CODE CONVERSION METHOD, PROGRAM, AND SYSTEM FOR GARBAGE COLLECTION - 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. | 03-20-2014 |
20140096116 | SYSTEM AND METHOD FOR EFFICIENT COMPILATION AND INVOCATION OF FUNCTION TYPE CALLS - 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. | 04-03-2014 |
20140149971 | DYNAMIC COMPILER PROGRAM, DYNAMIC COMPILING METHOD AND DYNAMIC COMPILING DEVICE - 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. | 05-29-2014 |
20140237458 | Systems and Methods for Efficient Just-In-Time Compilation - 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. | 08-21-2014 |
20140245272 | COMPUTER PROGRAM PRODUCT CONTAINING INSTRUCTIONS FOR PROVIDING A PROCESSOR THE CAPABILITY OF EXECUTING AN APPLICATION DERIVED FROM A COMPILED FORM - An integrated circuit card is used with a terminal. The integrated circuit card includes a memory that stores an interpreter and an application that has a high level programming language format. A processor of the card is configured to use the interpreter to interpret the application for execution and to use a communicator of the card to communicate with the terminal. | 08-28-2014 |
20140282449 | INCREMENTAL COMPILATION OF A SCRIPT CODE IN A DISTRIBUTED ENVIRONMENT - Disclosed here are methods, systems, paradigms and structures for incrementally compiling scripts at runtime to generate executable code. In a first phase, an executable block for a basic block of the script is generated for a set of types of variables of the basic block. In a second phase, a set of executable blocks whose profiling information, such as frequency of (a) execution, (b) transition between executable blocks, or (c) execution of a path, satisfies an optimization criterion is identified, and an executable control region is generated. In a third phase, profiling information from a number of systems in a distributed environment is aggregated, and an executable control region corresponding to the aggregated profile is generated. The executable code generated in each of the phases is more optimal than the code generated in a previous phase, and is used for execution until replaced by the code of a subsequent phase. | 09-18-2014 |
20140298305 | METHOD FOR CONTROLLING PROGRAM EXECUTION - An execution-target program is executed, via a program-execution control program, by converting a byte code in the execution-target program into a native code based on a predetermined condition. Upon activating the execution-target program, it is determined whether the execution-target program is an optimization-completed program having a past record of having been converted into an optimized state of the execution-target program, based on a profile including information identifying the optimization-completed program and optimized-code information indicating an optimized code for the optimization-completed program, where the profile is updated at a timing of executing the program-execution control program or another program-execution control program, and the optimized code is generated by converting a byte code into a native code. When the execution-target program is the optimization-completed program, upon activating the execution-target program, a byte code corresponding to the optimized-code information from among byte codes of the execution-target program is converted into a native code. | 10-02-2014 |
20140325492 | SELECTIVE SPECULATIVE CLASS-BASED OPTIMIZATION - A method, apparatus, and/or computer program product performs selective speculative class-based optimization through the use of a type propagation analysis of class. Responsive to a determination that the type of class is not a fixed type, a determination is made as to whether the class is sub-classed. Responsive to a determination the class is not sub-classed, a virtual synthetic property method is created. The virtual synthetic property method is accommodated in an enhanced java virtual machine using a stack frame type. The stack frame type has associated metadata for throwing an exception and an invisibility property. The virtual synthetic property method, along with a virtual guard, is inlined, and a slow path is created. The slow path handles executions of the virtual synthetic property method when sub-classes of the class, which override an implementation of the virtual synthetic property method, are loaded in the future. | 10-30-2014 |
20140325493 | SELECTIVE SPECULATIVE CLASS-BASED OPTIMIZATION - A method, apparatus, and/or computer program product performs selective speculative class-based optimization through the use of a type propagation analysis of class. Responsive to a determination that the type of class is not a fixed type, a determination is made as to whether the class is sub-classed. Responsive to a determination the class is not sub-classed, a virtual synthetic property method is created. The virtual synthetic property method is accommodated in an enhanced java virtual machine using a stack frame type. The stack frame type has associated metadata for throwing an exception and an invisibility property. The virtual synthetic property method, along with a virtual guard, is inlined, and a slow path is created. The slow path handles executions of the virtual synthetic property method when sub-classes of the class, which override an implementation of the virtual synthetic property method, are loaded in the future. | 10-30-2014 |
20140344792 | DYNAMIC BYTECODE MODIFICATION OF CLASSES AND CLASS HIERARCHIES - Various systems and methods for dynamic bytecode modification of classes and class hierarchies are described herein. In various embodiments, a Java® agent is received at a launch of a Java® Virtual Machine (JVM®), the agent implementing a premain method, the premain method accepting a reference to an instrumentation instance. The instrumentation reference is then stored, a deployment container is initialized, and, within the deployment container, an instance of an application is created. The instrumentation reference is then provided to the application instance. A class transformer is then retrieved from a persistence provider, and the class transformer is wrapped by an O.R. Persistence Container Class Transformer, which is then registered with the instrumentation instance. A class to be transformed is passed to the class transformer, which dynamically modifies the bytecode of the class before the class is loaded by the JVM®. | 11-20-2014 |
20150040110 | SYSTEMS AND METHODS FOR INCREMENTAL COMPILATION AT RUNTIME USING RELAXED GUARDS - Techniques provided herein facilitate just-in-time compilation of source code, such as a script, during execution. According to some embodiments, a tracelet is limited to a single basic block of code. The data types of variable values provided by one or more variables used in the single basic block of code are known by generalized categories, rather than only being known by specific data types. Accordingly, guard code associated with each tracelet, which ensures that variable values received by the tracelet though the variables are of the data types expected by the tracelet's associated code body, can use generalized data types. The tracelet can contain code body that can handle input values that meet those generalized data types. A generalized data type can be defined according to one or more common characteristics shared by two or more specific data types. | 02-05-2015 |
20150067658 | SIZE DEPENDENT TYPE IN ACCESSING DYNAMICALLY TYPED ARRAY OBJECTS - A method and an apparatus for providing a flat array type in an object model for dynamically typed programs are described. Whether an array object is of a flat array type can be dynamically tracked for a dynamic language based program. Array elements of an array object of the flat array type may be stored in an inline storage within an object cell of the array object. The inline storage may be limited by available memory space between adjacent object cells. The flat array type of an array object may be detected based on whether the inline storage has sufficient memory space to store elements of the array. An array object of the flay array type may allow array elements of the array object to be accessed within a object cell without additional memory loading via a pointer stored in the object cell. | 03-05-2015 |
20150089484 | Fast, Combined Forwards-Backwards Pass Global Optimization Framework for Dynamic Compilers - The various aspects provide a dynamic compilation framework that includes a machine-independent optimization module operating on a computing device and methods for optimizing code with the machine-independent optimization module using a single, combined-forwards-backwards pass of the code. In the various aspects, the machine-independent optimization module may generate a graph of nodes from the IR, optimize nodes in the graph using forwards and backwards optimizations, and propagating the forwards and backwards optimizations to nodes in a bounded subgraph recognized or defined based on the position of the node currently being optimized. In the various aspects, the machine-independent optimization module may optimize the graph by performing forwards and/or backwards optimizations during a single pass through the graph, thereby achieving an effective degree of optimization and shorter overall compile times. Thus, the various aspects may provide a global optimization framework for dynamic compilers that is faster and more efficient than existing solutions. | 03-26-2015 |
20150106796 | CLASS LOADING DEVICE FOR A JAVA RUNTIME ENVIRONMENT, CLUSTER SYSTEM AND METHOD OF EXECUTING A FUNCTION - A class loading device for a Java runtime environment, wherein the class loading device is configured to load predetermined source code written in R programming language to parse the R source code and, based on the parsed R source code, generate corresponding bytecode at least of a first Java class and transfer same to the Java runtime environment. | 04-16-2015 |
20150128115 | UNIFYING STATIC AND DYNAMIC COMPILER OPTIMIZATIONS IN SOURCE-CODE BASES - 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. | 05-07-2015 |
20150135170 | Methods and Systems for Providing Compatibility of Applications with Multiple Versions of an Operating System - Methods and systems for providing compatibility of applications with multiple versions of an operating system are provided. The method may comprise receiving, by a device, a request to perform a function-call of an application that references features of a first version of an operating system. The method also includes determining whether a version of the operating system and a system library on the device supports the function-call of the application so as to be able to perform dynamic compilation of code in the system library for the function-call at run-time, and based on the determination, accessing a compatibility library associated with the application that includes pre-compiled code for execution by a given device having a given version of the operating system other than the first version of the operating system. The method also includes at run-time, performing the function-call using corresponding pre-compiled code from the compatibility library. | 05-14-2015 |
20150149986 | Systems and Methods for Loop Suspension in Java Programming - System and methods are provided for loop process suspension. One or more loop instructions associated with a loop process are loaded in a code cache. One or more branch instructions associated with a branch of the loop process in the code cache are determined. A suspension event is detected. The branch instructions are replaced with one or more jump instructions in the code cache upon the detection of the suspension event. If the jump instructions are executed in the code cache, the branch instructions in the code cache are restored, and the loop process is suspended. One or more suspension instructions associated with the suspension event are executed in an interpreter. | 05-28-2015 |
20150301810 | Data Processing Method and Apparatus - A data processing method and apparatus, which relate to the computer field and are capable of effectively improving scalability of a database system. The data processing method includes: receiving source code of an external routine, where the source code of the external routine is compiled by using an advanced programming language; compiling the source code to obtain intermediate code, where the intermediate code is a byte stream identifiable to a virtual machine on any operating platform; converting, according to an instruction set on the operating platform, the intermediate code into machine code capable of running on the operating platform; and storing the machine code to a database. The data processing method and apparatus provided by the embodiments of the present invention are used to process data. | 10-22-2015 |
20150301837 | Structural Identification of Dynamically Generated, Pattern-Instantiation, Generated Classes - Structural identification of dynamically generated, pattern-instantiation classes may be utilized using structural descriptions. Instead of describing classes only by name, and using that name to locate that class, a class may be referred to by a generator function and arguments to the generator function. A structural description may specify the generator function and the parameters. In addition, a structural description of a class may be used as a parameter to a generator function specified by another structural description. A structural description may be used similarly to a class name for virtually any situation in which a class name may be used. Classes may be compared using their structural descriptions. For example, two structural descriptions may be considered to be the same class if they specify the same generator function and parameters. | 10-22-2015 |
20150309815 | AUGMENTING PROFILE DATA WITH INFORMATION GATHERED FROM A JIT COMPILER - A method, executed by a computer, for augmenting a first performance profile with data extracted from a Just-in-Time compiler, the Just-in-Time compiler compiling bytecodes into machine instructions and generating the first performance profile, the bytecodes having an associated original call structure includes: tracking “in-lining” optimizations performed by a Just-in-Time compiler compiling bytecodes into machine instructions; extracting data associated with the tracked “in-lining” optimizations; storing the extracted data in a second profile; and augmenting the first performance profile with the extracted data associated with the tracked “in-lining” optimizations, the extracted data comprising call paths corresponding to the original call structure associated with the bytecodes. A corresponding computer program product and computer system are also disclosed herein. | 10-29-2015 |
20150331677 | COMPILING METHOD AND COMPILING DEVICE - A computer converts a source program into intermediate code. The computer detects, based on profile information related to a memory access for accessing target data stored in a memory, a memory access that fits an access pattern corresponding to an operating condition of a hardware prefetch function for the target data. The target data is data for which a prefetch instruction is to be inserted in advance. The prefetch instruction is an instruction for transferring data stored in the memory to a cache memory. The computer computes an evaluation value for the target data based on a length of successive memory accesses that fit the access pattern, and determines, based on the evaluation value, whether to suppress insertion of a prefetch instruction for the target data. The computer updates the intermediate code based on a result of the determination, and converts the updated intermediate code into a machine language program. | 11-19-2015 |
20150331701 | INTERACTIVE VIEWER OF INTERMEDIATE REPRESENTATIONS OF CLIENT SIDE CODE - An interactive intermediate representation (IR) viewer displays a view of the intermediate representation of client side code during a just-in-time compilation of the client side code in a live environment. The interactive IR viewer allows a developer to request the intermediate representation generated during one or more of the phases of the JIT compilation of the client side code. Modifications may be made to the intermediate representation before executable code is generated. The analysis of the intermediate representation during the live environment provides a developer with insight as to how the executable code is being compiled so that improvements may be made to improve the performance of the client side code. | 11-19-2015 |
20150339137 | METHODS, SYSTEMS, AND MEDIA FOR BINARY COMPATIBLE GRAPHICS SUPPORT IN MOBILE OPERATING SYSTEMS - Methods, systems, and media for binary compatible graphics support in mobile operating systems are provided. In some embodiments, binary compatible graphics support can be provided by extending diplomatic functions to perform library-wide prelude and postlude operations in the context of the foreign operating system before and after domestic library usage. In some embodiments, binary compatible graphics support can be provided by using thread impersonation approaches that allow one thread to temporarily take on the persona of another thread to perform some action that may be tread-dependent. In some embodiments, binary compatible graphics support can be provided by using dynamic library replication approaches that load multiple, independent instances of a single library within the same process. | 11-26-2015 |
20150339138 | ENHANCED JAVA ARRAY - A method for creating an enhanced array is provided. An enhanced compiler generates an instrumented class file for an enhanced array class. The enhanced array class comprises at least one element class. The enhanced runtime loads the instrumented class file of the enhanced array class. The enhanced runtime loads a class file corresponding to the element class of the enhanced array class, and builds an internal data structure corresponding to the enhanced array class. An amount of memory storage is calculated for storing the enhanced array instance, and the amount of memory storage is allocated. | 11-26-2015 |
20150339139 | ENHANCED JAVA ARRAY - A method for creating an enhanced array is provided. An enhanced compiler generates an instrumented class file for an enhanced array class. The enhanced array class comprises at least one element class. The enhanced runtime loads the instrumented class file of the enhanced array class. The enhanced runtime loads a class file corresponding to the element class of the enhanced array class, and builds an internal data structure corresponding to the enhanced array class. An amount of memory storage is calculated for storing the enhanced array instance, and the amount of memory storage is allocated. | 11-26-2015 |
20150339140 | Application Access to Native and Bundled Libraries - An application executing on a computing device may invoke a function call of a first function. The computing device may support a bundled application library of functions and a native library of functions. It may be determined that code for executing the first function exists in both the bundled application library and the native library, and the application may execute the first function using the code in the native library. While the application continues execution on the computing device, the application may invoke a function call of a second function. It may be determined that, of the bundled application library and the native library, the code for executing the second function exists in the bundled application library. The application may execute the second function using the code in the bundled application library. | 11-26-2015 |
20150370560 | METHODS FOR ENFORCING CONTROL FLOW OF A COMPUTER PROGRAM - One aspect of the invention provides a method of controlling execution of a computer program. The method comprises the following runtime steps: parsing code to identify one or more indirect branches; creating a branch ID data structure that maps an indirect branch location to a branch ID, which is the indirect branch's equivalence class ID; creating a target ID data structure that maps a code address to a target ID, which is an equivalence class ID to which the address belongs; and prior to execution of an indirect branch including a return instruction located at an address: obtaining the branch ID associated with the return address from the branch ID data structure; obtaining the target ID associated with an actual return address for the indirect branch from the target ID data structure; and comparing the branch ID and the target ID. | 12-24-2015 |
20150370585 | DYNAMIC CODE INJECTION - Embodiments of the present invention disclose an approach for inserting code into a running thread of execution. A computer sets a first set of bits to a first value, wherein the first value indicates that a first set of instructions should be inserted onto a stack. The computer executes a second set of instructions associated with a first safepoint, wherein the second set of instructions comprises one or more instructions to determine if the first set of bits is set to the first value. The computer determines that the first set of bits is set to the first value, and the computer inserts the first set of instructions onto the stack. | 12-24-2015 |
20150378756 | SYSTEMS AND METHODS FOR MOBILE APPLICATION TRACING INSTRUMENTATION - Provided herein are systems and methods for instrumenting mobile applications. A decompiler of an instrumentation tool may convert byte code of a compiled mobile application to source code. The instrumentation tool may add instrumentation code into one or more selected classes of the source code by generating an instrumentation class in the source code for each of the one or more selected classes. A compiler of the instrumentation tool may compile the source code that includes instrumentation code into the byte code of the compiled mobile application. Responsive to execution of the compiled mobile application, the byte code that corresponds to the instrumentation code may report instrumentation data to one of a local file or a server. | 12-31-2015 |
20150378757 | OPTIMIZING SOFTWARE CODE - A method of optimizing software source code, where the source code is for execution as compiled bytecode using a just-in-time compiler. The source code is compiled to generate corresponding compiled bytecode. The bytecode is then executed using a just-in-time compiler. Run-time optimization actions performed by the just-in-time compiler during execution of the bytecode are determined, and analysed to determine corresponding optimization data for the source code. | 12-31-2015 |
20160011857 | Dynamic Compiler Parallelism Techniques | 01-14-2016 |
20160019039 | Fast, Combined Forwards-Backwards Pass Global Optimization Framework for Dynamic Compilers - The various aspects provide a dynamic compilation framework that includes a machine-independent optimization module operating on a computing device and methods for optimizing code with the machine-independent optimization module using a single, combined-forwards-backwards pass of the code. In the various aspects, the machine-independent optimization module may generate a graph of nodes from the IR, optimize nodes in the graph using forwards and backwards optimizations, and propagating the forwards and backwards optimizations to nodes in a bounded subgraph recognized or defined based on the position of the node currently being optimized. In the various aspects, the machine-independent optimization module may optimize the graph by performing forwards and/or backwards optimizations during a single pass through the graph, thereby achieving an effective degree of optimization and shorter overall compile times. Thus, the various aspects may provide a global optimization framework for dynamic compilers that is faster and more efficient than existing solutions. | 01-21-2016 |
20160026444 | SYSTEM CONVERTER THAT IMPLEMENTS A REORDERING PROCESS THROUGH JIT (JUST IN TIME) OPTIMIZATION THAT ENSURES LOADS DO NOT DISPATCH AHEAD OF OTHER LOADS THAT ARE TO THE SAME ADDRESS - A system for an agnostic runtime architecture. The system includes a system emulation/virtualization converter, an application code converter, and a converter wherein a system emulation/virtualization converter and an application code converter implement a system emulation process, and wherein the system converter implements a system and application conversion process for executing code from a guest image, wherein the system converter or the system emulator. The system further includes a reordering process through JIT (just in time) optimization that ensures loads do not dispatch ahead of other loads that are to the same address, wherein a load will check for a same address of subsequent loads from a same thread, and a thread checking process that enable other thread store checks against the entire load queue and a monitor extension. | 01-28-2016 |
20160026445 | SYSTEM CONVERTER THAT IMPLEMENTS A RUN AHEAD RUN TIME GUEST INSTRUCTION CONVERSION/DECODING PROCESS AND A PREFETCHING PROCESS WHERE GUEST CODE IS PRE-FETCHED FROM THE TARGET OF GUEST BRANCHES IN AN INSTRUCTION SEQUENCE - A system for an agnostic runtime architecture. The system includes a system emulation/virtualization converter, an application code converter, and a converter wherein a system emulation/virtualization converter and an application code converter implement a system emulation process, and wherein the system converter implements a system and application conversion process for executing code from a guest image, wherein the system converter or the system emulator. The system further includes a run ahead run time guest such an conversion/decoding process, and a prefetching process where guest code is pre-fetched from the target of guest branches in an instruction sequence. | 01-28-2016 |
20160026484 | SYSTEM CONVERTER THAT EXECUTES A JUST IN TIME OPTIMIZER FOR EXECUTING CODE FROM A GUEST IMAGE - A system for an agnostic runtime architecture. The system includes a system emulation/virtualization converter, an application code converter, and a system converter wherein the system emulation/virtualization converter and the application code converter implement a system emulation process, and wherein the system converter implements a system conversion process for executing code from a guest image. The system converter executes a JIT optimizer, and wherein the JIT optimizer ensures loads are not dispatch ahead of other loads that are to a same memory address by checking for the same address from subsequent loads from a same thread. | 01-28-2016 |
20160041816 | SYSTEMS AND METHODS FOR MOBILE APPLICATIONS - Systems and methods for improving the performance of mobile applications are disclosed. An exemplary method can include receiving a request for the application, where the request can include target device information. The method can also determine whether the application has been cached before. If the application has not been cached, the method can download the application as a bytecode and process the bytecode into the native code format, using an Ahead-of-time compiler. The method can also provide the application in the native code format to the target device over the network. | 02-11-2016 |
20160070551 | DYNAMIC CODE MANAGEMENT - Systems and methods for performing dynamic code management, such as dynamic management of JavaScript tags in webpages or code segments in native applications, are disclosed. A user device loading a web or native application can access a factor, such as a user device-specific attribute or a piece of content of the webpage or native application being loaded. That factor can be applied to a rule that is evaluated (e.g., by the user device or a code server) to select one or more desired segments of code (e.g., JavaScript tags or native application code) to be executed by the user device from a pool of available code (e.g., pre-embedded code or dynamically injected code). | 03-10-2016 |
20160085532 | JUST-IN-TIME EXPENSIVE COMPILATION HINTS - Using stored information about the compilation environment during compilation of a code segment to improve performance of just-in-time compilers. A set of characteristic(s) of a compilation environment is measured during compilation of a code segment. Information that may be relevant to how the compilation is performed is derived from at least one of the measured characteristics and stored in a persistent storage device. Upon a subsequent request to compile that code segment, the information is retrieved and used to change compilation behavior. The set of characteristic(s) relate to at least either compilation backlog or peak memory usage. The changed compilation behavior involves at least adjusting the scheduling of the subsequent compilation request or adjusting the compiler optimization level. | 03-24-2016 |
20160117182 | DYNAMIC BIT-WIDTH MODIFICATION OF INTERNAL POINTERS OF A VIRTUAL MACHINE - A content processing device and corresponding method for processing source code are disclosed. The method may include receiving source code with a virtual machine operating on a hardware platform with an inherent address-pointer-bit-width and generating, from the source code, executable code that includes internal address pointers to objects in the virtual machine heap. One or more runtime conditions may be monitored and a size of a bit-width for the internal address pointers in the virtual machine may be adjusted, with or without associated changes to create optimized layout of the objects in the virtual machine heap, based upon one or more runtime conditions. | 04-28-2016 |
20160170727 | Runtime Compiler Environment With Dynamic Co-Located Code Execution | 06-16-2016 |
20160188350 | TRUSTED BINARY TRANSLATION - In an example, a computing device may include a trusted execution environment (TEE) for executing signed and verified code. The device may receive a trusted binary object in a first form, but the object may need to be converted to a second format, either on-the-fly, or in advance. This may include, for example, a bytecode interpreter, script interpreter, runtime engine, compiler, just-in-time compiler, or other species of binary translator. The binary translator may be run from the TEE, and the output may then be signed by the TEE and treated as a new trusted binary. | 06-30-2016 |
20160196156 | SIMULATION APPARATUS, SIMULATION METHOD, AND COMPUTER PRODUCT | 07-07-2016 |
20160202961 | Specialization of Generic Methods | 07-14-2016 |
20180024844 | Structural Identification of Dynamically-Generated, Pattern-Based Classes | 01-25-2018 |
20190146817 | BINDING CONSTANTS AT RUNTIME FOR IMPROVED RESOURCE UTILIZATION | 05-16-2019 |
20220137994 | INSTANCES OF JUST-IN-TIME (JIT) COMPILATION OF CODE USING DIFFERENT COMPILATION SETTINGS - In some examples, just-in-time (JIT) control instructions upon execution cause a system to initiate a plurality of instances of JIT compilation of a first code called by a program, where the initiating of the plurality of instances of the JIT compilation of the first code is under control of the JIT control instructions that are outside the program, and the plurality of instances of the JIT compilation of the first code use respective different compilation settings, and are to produce respective JIT compiled instances of the first code. | 05-05-2022 |