Parallel Processing Of Data
US-2024338235-A1 · Oct 10, 2024 · US
US2018373545A1 · US · A1
| Field | Value |
|---|---|
| Publication number | US-2018373545-A1 |
| Application number | US-201816121105-A |
| Country | US |
| Kind code | A1 |
| Filing date | Sep 4, 2018 |
| Priority date | Jun 29, 2010 |
| Publication date | Dec 27, 2018 |
| Grant date | — |
A practical reading order for non-experts. Skip the full description unless you need deep technical detail.
What the patent document calls the invention.
A short plain-language summary of the technical disclosure.
Who owns or filed the patent and who is credited as inventor.
Filing, priority, publication, and grant dates set the timeline.
The legal scope of protection — read this for what is actually claimed.
Technology tags used to group this patent with similar filings.
Prior art links and similar publications in this corpus.
Official abstract text for this publication.
Aspects of an application program's execution which might be subject to non-determinism are performed in a deterministic manner while the application program's execution is being recorded in a virtual machine environment so that the application program's behavior, when played back in that virtual machine environment, will duplicate the behavior that the application program exhibited when originally executed and recorded. Techniques disclosed herein take advantage of the recognition that only minimal data needs to be recorded in relation to the execution of deterministic operations, which actually can be repeated “verbatim” during replay, and that more highly detailed data should be recorded only in relation to non-deterministic operations, so that those non-deterministic operations can be deterministically simulated (rather than attempting to re-execute those operations under circumstances where the outcome of the re-execution might differ) based on the detailed data during replay.
Opening claim text (preview).
1 . (canceled) 2 . A computer-implemented method comprising steps of: detecting an event that indicates that a class of a computer program is being prepared during a linking process; in response to detecting the event, obtaining a method list of all method signatures of methods of the class; determining a class list of one or more classes that are identified by a particular method signature in the method list; and for each particular class in the class list, invoking a class loader of the particular class prior to runtime in order to load, in a deterministic order, classes that could have been loaded due to just-in-time (JIT) compilation during runtime of the computer program; wherein the steps are performed by a replay core executing on a computing device. 3 . The computer-implemented method of claim 2 , wherein the steps are performed by the replay core at both a record time and a replay time in order to load classes that could have been loaded due to the JIT compilation in the same order at both the record time and the replay time. 4 . The computer-implemented method of claim 2 , wherein the JIT compilation, if performed, causes classes to be loaded in a non-deterministic manner at runtime. 5 . The computer-implemented method of claim 4 , wherein invoking the class loader for each particular class in the class list prior to runtime prevents the JIT compilation from causing any of the classes in the class list from being loaded during runtime of the computer program. 6 . The computer-implemented method of claim 2 , further comprising the steps of: locating, within bytecode of the computer program, a particular instruction that is either a “checkcast” instruction or an “instanceof” instruction, wherein the particular instruction identifies a class; and in response to locating the particular instruction, injecting, into the bytecode of the computer program, prior to the particular instruction, an additional instruction, which, when executed by a virtual machine, will cause the virtual machine to load the class to thereby prevent the JIT compilation from loading the class identified by the particular instruction from being loaded non-deterministically; wherein the steps of locating and injecting are performed by the replay core. 7 . The computer-implemented method of claim 6 , wherein the steps of locating and injecting are performed by the replay core at both a record time and a replay time in order to load classes that could have been loaded due to the JIT compilation in the same order at both the record time and the replay time. 8 . The computer-implemented method of claim 6 , wherein the additional instruction is a JAVA “LDC” bytecode that identifies the class, wherein the virtual machine is a JAVA Virtual Machine (JVM). 9 . A computer-readable storage medium storing instructions which, when executed by one or more processors, cause the one or more processors to: locate, within bytecode of a computer program, a plurality of particular instructions that are either a “checkcast” instruction or an “instanceof” instruction; wherein each of the particular instructions identifies a class; and in response to locating each particular instruction, inject, into the bytecode of the computer program, prior to the particular instruction, an additional instruction, which, when executed by a virtual machine, will cause the virtual machine to load at runtime the class identified by the particular instruction to thereby prevent just-in-time (JIT) compilation from causing the classes identified by the particular instructions from being loaded non-deterministically at runtime of the computer program. 10 . The computer-readable storage medium of claim 9 , wherein the instructions are performed by a replay core at both a record time and a replay time in order to load classes that could have been loaded due to the JIT compilation in the same order at both the record time and the replay time. 11 . The computer-readable storage medium of claim 9 , wherein the additional instruction for each particular instruction is a JAVA “LDC” bytecode that identifies the class for each particular instruction, wherein the virtual machine is a JAVA Virtual Machine (JVM). 12 . The computer-readable storage medium of claim 9 , wherein the instructions which, when executed by one or more processors, further cause the one or more processors to: detect an event that indicates that a class of the computer program is being prepared during a linking process; in response to detecting the event, obtain a method list of all method signatures of methods of the class; determining a class list of one or more classes that are identified by a particular method signature in the method list; and for each particular class in the class list, invoke a class loader of the particular class prior to runtime in order to load, in a deterministic order, classes that could have been loaded due to just-in-time (JIT) compilation during runtime of the computer program. 13 . The computer-readable storage medium of claim 12 , wherein the instructions are performed by a replay core at both a record time and a replay time in order to load, in the same order at both the record time and the replay time, classes that could have been loaded due to the JIT compilation. 14 . The computer-readable storage medium of claim 12 , wherein the JIT compilation, if performed, would cause classes to be loaded in a non-deterministic manner at runtime of the computer program. 15 . The computer-readable storage medium of claim 12 , wherein invoking the class loader for each particular class in the class list prior to runtime prevents the JIT compilation from causing any of the one or more classes in the class list from being loaded during runtime of the computer program. 16 . A computer-readable storage medium storing instructions which, when executed by one or more processors, cause the one or more processors to: detect an event that indicates that a class of a computer program is being prepared during a linking process; in response to detecting the event, obtain a method list of all method signatures of methods of the class; determine a class list of one or more classes that are identified by a particular method signature in the method list; and for each particular class in the class list, invoke a class loader of the particular class prior to runtime in order to preemptively load, in a deterministic order, classes that could have been loaded due to just-in-time (JIT) compilation during runtime of the computer program. 17 . The computer-readable storage medium of claim 16 , wherein the instructions are performed by a replay core executing on a computing device at both a record time and a replay time in order to load classes that could have been loaded due to the JIT compilation in the same order at both the record time and the replay time. 18 . The computer-readable storage medium of claim 16 , wherein the JIT compilation, if performed, would cause classes to be loaded in a non-deterministic manner at runtime of the computer program. 19 . The computer-readable storage medium of claim 16 , wherein invoking the class loader for each particular class in the class list prior to the runtime prevents the JIT compilation from causing any of the classes in the class list from being loaded during runtime of the computer program. 20 . The computer-readable storage medium of claim 16 , wherein the instructions which, when executed by one or more processors, cause the one or more
Program loading or initiating (bootstrapping G06F9/4401; security arrangements for program loading or initiating G06F21/57) · CPC title
Program code verification, e.g. Java bytecode verification, proof-carrying code (high-level semantic checks G06F8/43; prevention of errors by analysis, debugging or testing of software G06F11/36) · CPC title
by tracing the execution of the program · CPC title
Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading · CPC title
Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators · CPC title
Related publications grouped by family.
Answers are generated from the same data shown on this page.