Patent US5250923A successfully refreshed from Google Patents.
Patent US6141794A successfully refreshed from Google Patents.
← Back to Patent Explorer
US6141794A Expired / Lapsed US ⏱️ 0.0 years remaining

System and method for synchronizing access to shared variables in a virtual machine in a digital computer system

Assignee: Oracle America Inc
•
Filing: 1998-10-16
•
Granted: 2000-10-31
•
Expires: 2018-10-16
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A code generating system generates, from code in a program, native code that is executable by a computer system. The code generating system may be included in a just-in-time compiler used to generate native code that is executable by a computer system, from a program in Java Byte Code form, and specifically generates, in response to Java Byte Code representative of a synchronization statement that synchronizes access by multiple threads of execution to at least one variable contained in the Java Byte code, one or more native code instructions that implements a wait-free synchronization methodology to synchronization access to the at least one variable. Since the instructions which implement the wait-free synchronization methodology do not require calls to the operating system, they can generally be processed more rapidly than other synchronization techniques which do require operating system calls.

Inventors

  • 👤 David Dice
  • 👤 Ronald J. Mann
  • 👤 Robert G. Vandette

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-08 02:58
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/46; G06F9/52; G06F9/526; G06F8/00; G06F8/40; G06F8/41; G06F8/44; G06F8/447; G06F8/45

Claims Analysis

Total Claims: 21
Claim 1
Independent Claim 118 words
A code generator for generating, from code in a program, native code executable by a computer system, the code generator comprising: A. a code portion receiver configured to receive a portion of the program code for which the native executable code is to be generated B. a synchronization statement detector configured to determine whether the received program code portion includes a statement for synchronizing access by multiple execution threads to at least one variable contained within the obtained code; and C. a native code generator configured to, in response to positive determination by said synchronization statement detector, generate native code for the synchronization statement including a wait-free synchronization construct to synchronize access to the at least one variable.
Claim 2
Dependent Claim 118 words
A code generator for generating, from code in a program, native code executable by a computer system, the code generator comprising: A. a code portion receiver configured to receive a portion of the program code for which the native executable code is to be generated B. a synchronization statement detector configured to determine whether the received program code portion includes a statement for synchronizing access by multiple execution threads to at least one variable contained within the obtained code; and C. a native code generator configured to, in response to positive determination by said synchronization statement detector, generate native code for the synchronization statement including a wait-free synchronization construct to synchronize access to the at least one variable.
Claim 3
Dependent Claim 36 words
A code generator as defined in claim 1 in which the native code generator is further configured to, in response to a negative determination by the synchronization statement detector, generate native code in a conventional manner.
Claim 4
Dependent Claim 180 words
A code generator as defined in claim 1 in which the native code generator is configured to generate the wait-free synchronization construct as including at least one native code instruction configured to enable the computer system to: A. retrieve a value from a storage location for the variable; B. perform a predetermined operation in connection with the value to generate a modified value; C. perform an atomic compare-and-swap operation in connection with the value, the modified value and contents of the storage location to compare the value to the contents of the storage location and (i) if the value corresponds to the contents of the storage location, store the modified value in the storage location, but (ii) if the value does not correspond to the contents of the storage location, update the modified value with the contents of the storage location; D. compare the value and the modified value and, if the value and modified value correspond continue, but, if the value and modified value do not correspond, perform a subsequent iteration of the at least one native code instruction.
Claim 5
Dependent Claim 18 words
A code generator as defined in claim 1 in which the program includes instructions in Java Byte Code.
Claim 6
Dependent Claim 22 words
A code generator as defined in claim 1 in which the native code generator is in the form of a just-in-time compiler.
Claim 7
Dependent Claim 43 words
A code generator as defined in claim 1 in which, if the synchronization statement detector detects synchronization statements for synchronizing access to a plurality of variables, the native code generator generates a wait-free synchronization construct associated with each of said plurality of variables.
Claim 8
Dependent Claim 106 words
A code generation method for generating, from code in a program, native code executable by a computer system, the code generation method comprising the steps of: A. receiving a portion of the program code for which the native executable code is to be generated B. determining whether the received program code portion includes a statement for synchronizing access by multiple execution threads to at least one variable contained within the obtained code; and C. in response to positive determination during said synchronization statement determination step, generate native code for the synchronization statement including a wait-free synchronization construct to synchronize access to the at least one variable.
Claim 9
Dependent Claim 106 words
A code generation method for generating, from code in a program, native code executable by a computer system, the code generation method comprising the steps of: A. receiving a portion of the program code for which the native executable code is to be generated B. determining whether the received program code portion includes a statement for synchronizing access by multiple execution threads to at least one variable contained within the obtained code; and C. in response to positive determination during said synchronization statement determination step, generate native code for the synchronization statement including a wait-free synchronization construct to synchronize access to the at least one variable.
Claim 10
Dependent Claim 38 words
A code generation method as defined in claim 7 in which the native code generation step includes the step of, in response to a negative determination by the synchronization statement detector, generating native code in a conventional manner.
Claim 11
Dependent Claim 183 words
A code generation method as defined in claim 7 in which the native code generation step includes the step of generating the wait-free synchronization construct to include at least one native code instruction configured to enable the computer system to: A. retrieve a value from a storage location for the variable; B. perform a predetermined operation in connection with the value to generate a modified value; C. perform an atomic compare-and-swap operation in connection with the value, the modified value and contents of the storage location to compare the value to the contents of the storage location and (i) if the value corresponds to the contents of the storage location, store the modified value in the storage location, but (ii) if the value does not correspond to the contents of the storage location, update the modified value with the contents of the storage location; D. compare the value and the modified value and, if the value and modified value correspond continue, but, if the value and modified value do not correspond, perform a subsequent iteration of the at least one native code instruction.
Claim 12
Dependent Claim 19 words
A code generation method as defined in claim 7 in which the program includes instructions in Java Byte Code.
Claim 13
Dependent Claim 24 words
A code generation method as defined in claim 7 in which the native code generating step includes the step of using a just-in-time compiler.
Claim 14
Dependent Claim 54 words
A code generation method as defined in claim 7 in which, if the synchronization statement determination step includes the step of detecting synchronization statements for synchronizing access to a plurality of variables, the native code generation step including the step of generating a wait-free synchronization construct associated with each of said plurality of variables.
Claim 15
Dependent Claim 153 words
A computer program product for use in connection with a computer to provide a code generator for generating, from code in a program, native code executable by a computer system, the computer program product comprising a computer-readable medium having encoded thereon: A. a code portion receiver module configured to enable the computer to receive a portion of the program code for which the native executable code is to be generated B. a synchronization statement detector module configured to enable the computer to determining whether the received program code portion includes a statement for synchronizing access by multiple execution threads to at least one variable contained within the obtained code; and C. a native code generator module configured to enable the computer to, in response to positive determination by said synchronization statement detector, generate native code for the synchronization statement including a wait-free synchronization construct to synchronize access to the at least one variable.
Claim 16
Dependent Claim 153 words
A computer program product for use in connection with a computer to provide a code generator for generating, from code in a program, native code executable by a computer system, the computer program product comprising a computer-readable medium having encoded thereon: A. a code portion receiver module configured to enable the computer to receive a portion of the program code for which the native executable code is to be generated B. a synchronization statement detector module configured to enable the computer to determining whether the received program code portion includes a statement for synchronizing access by multiple execution threads to at least one variable contained within the obtained code; and C. a native code generator module configured to enable the computer to, in response to positive determination by said synchronization statement detector, generate native code for the synchronization statement including a wait-free synchronization construct to synchronize access to the at least one variable.
Claim 17
Dependent Claim 45 words
A computer program product as defined in claim 13 in which the native code generator module is further configured to enable the computer to, in response to a negative determnination during execution of the synchronization statement detector module, generate native code in a conventional manner.
Claim 18
Dependent Claim 186 words
A computer program product as defined in claim 13 in which the native code generator module is configured to enable the computer to generate the wait-free synchronization construct as including at least one native code instruction configured to enable the computer system to: A. retrieve a value from a storage location for the variable; B. perform a predetermined operation in connection with the value to generate a modified value; C. perform an atomic compare-and-swap operation in connection with the value, the modified value and contents of the storage location to compare the value to the contents of the storage location and (i) if the value corresponds to the contents of the storage location, store the modified value in the storage location, but (ii) if the value does not correspond to the contents of the storage location, update the modified value with the contents of the storage location; D. compare the value and the modified value and, if the value and modified value correspond continue, but, if the value and modified value do not correspond, perform a subsequent iteration of the at least one native code instruction.
Claim 19
Dependent Claim 19 words
A computer program product as defined in claim 13 in which the program includes instructions in Java Byte Code.
Claim 20
Dependent Claim 24 words
A computer program product as defined in claim 13 in which the native code generator module is in the form of a just-in-time compiler.
Claim 21
Dependent Claim 51 words
A computer program product as defined in claim 13 in which, if the synchronization statement detector module enables the computer to detect synchronization statements for synchronizing access to a plurality of variables, the native code generator enables generation of a wait-free synchronization construct associated with each of said plurality of variables.

References Cited (Backward Citations)

US5197130A Cited
US5560029A Cited
US5822588A Cited
US5961639A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2003-10-31 2004-05-01 2004-10-31 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2007-10-31 2008-05-01 2008-10-31 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2011-10-31 2012-05-01 2012-10-31 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag