← Back to Patent Explorer
US5794256A Expired / Lapsed US ⏱️ 0.0 years remaining

Pointer swizzling facility using three-state references to manage access to referenced objects

Assignee: Microsoft Technology Licensing LLC
•
Filing: 1996-12-12
•
Granted: 1998-08-11
•
Expires: 2016-12-12
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract The present invention uses three-state references to manage access to referenced objects. In a preferred embodiment, a pointer swizzling facility receives a request to swizzle a persistent pointer. In response to the request, the facility copies the persistent pointer to an indirection slot, and replaces the original persistent pointer with a smart pointer containing a pointer to the indirection slot. When the facility subsequently detects an attempt to dereference the smart pointer, the facility loads the referenced object using the persistent pointer stored in the indirection slot pointed to by the smart pointer. The facility further replaces the persistent pointer in the indirection slot with a pointer to the loaded referenced object. The facility also replaces the pointer to the indirection slot in the smart pointer with a pointer to the loaded dereferenced object. Finally, the facility dereferences the pointer to the loaded referenced object in response to the attempt to dereference the smart pointer.

Inventors

  • 👤 John G. Bennett
  • 👤 Ketan Dalal

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-06 16:30
CPC Classifications
G; G06; G06F; G06F12/00; G06F12/02; G06F12/0223; G06F12/023; G06F12/0253; G06F9/00; G06F9/06; G06F9/44; G06F9/448; G06F9/4488; G06F9/4493; Y; Y10; Y10S; Y10S707/00; Y10S707/99951; Y10S707/99952; Y10S707/99953; Y10S707/99956; Y10S707/99957

Claims Analysis

Total Claims: 15
Claim 1
Independent Claim 176 words
A method in a computer system having a memory for swizzling a persistent pointer to a referenced object in a referencing object using an indirection slot and using smart pointers adapted to contain either a pointer to the indirection slot or a pointer to a loaded referenced object, comprising the steps of: loading the referencing object into the memory; in response to the step of loading the referencing object: copying the persistent pointer from the referencing object to the indirection slot, and replacing the persistent pointer in the referencing object with a smart pointer containing a pointer to the indirection slot; detecting an attempt to dereference the smart pointer; and in response to the detecting step: loading the referenced object into the memory using the persistent pointer stored in the indirection slot, replacing the persistent pointer in the indirection slot with a pointer to the loaded referenced object, replacing the pointer to the indirection slot in the smart pointer with the pointer to the loaded referenced object, and dereferencing the pointer to the loaded referenced object.
Claim 2
Independent Claim 176 words
A method in a computer system having a memory for swizzling a persistent pointer to a referenced object in a referencing object using an indirection slot and using smart pointers adapted to contain either a pointer to the indirection slot or a pointer to a loaded referenced object, comprising the steps of: loading the referencing object into the memory; in response to the step of loading the referencing object: copying the persistent pointer from the referencing object to the indirection slot, and replacing the persistent pointer in the referencing object with a smart pointer containing a pointer to the indirection slot; detecting an attempt to dereference the smart pointer; and in response to the detecting step: loading the referenced object into the memory using the persistent pointer stored in the indirection slot, replacing the persistent pointer in the indirection slot with a pointer to the loaded referenced object, replacing the pointer to the indirection slot in the smart pointer with the pointer to the loaded referenced object, and dereferencing the pointer to the loaded referenced object.
Claim 3
Dependent Claim 39 words
The method of claim 1, further comprising the steps of: detecting a second attempt to dereference the smart pointer; and in response to the detecting step, dereferencing the pointer to the loaded referenced object contained in the smart pointer.
Claim 4
Dependent Claim 71 words
The method of claim 1 wherein one or more additional smart pointers containing pointers to the loaded referenced object may have been created, further comprising the steps of: receiving a request to idle the loaded referenced object; and in response to the receiving step, for each smart pointer containing a pointer to the loaded referenced object, replacing the pointer to the loaded referenced object with a pointer to the indirection slot.
Claim 5
Dependent Claim 87 words
The method of claim 3, further comprising the steps of, after the step of replacing the pointer to the loaded referenced object with a pointer to the indirection slot: detecting a second attempt to dereference the smart pointer; and in response to the step of detecting a second attempt to dereference the smart pointer: replacing the pointer to the indirection slot and the smart pointer with the pointer to the loaded reference object stored in the indirection slot, and dereferencing the pointer to the loaded referenced object.
Claim 6
Dependent Claim 105 words
The method of claim 1, further including the step of loading into memory one or more additional referenced objects using additional smart pointers, and wherein one or more additional smart pointers containing pointers to the loaded referenced objects may have been created, the method further comprising the steps of: receiving a request to idle an identified plurality of loaded referenced objects; and in response to the receiving step, for each smart pointer containing a pointer to one of the identified loaded referenced objects, replacing the pointer to the identified loaded referenced object with a pointer to the indirection slot for the identified loaded referenced object.
Claim 7
Dependent Claim 160 words
A computer-readable medium whose contents cause a computer system to swizzle a persistent pointer to a referenced object using an indirection slot and using smart pointers adapted to contain either a pointer to the indirection slot or a pointer to a loaded referenced object by performing the steps of receiving a request to swizzle a persistent pointer; in response to the receiving step: copying the persistent pointer to the indirection slot, and replacing the original persistent pointer with a smart pointer containing a pointer to the indirection slot; detecting an attempt to dereference the smart pointer; and in response to the detecting step: loading the referenced object using the persistent pointer stored in the indirection slot, replacing the persistent pointer in the indirection slot with a pointer to the loaded referenced object, replacing the pointer to the indirection slot in the smart pointer with the pointer to the loaded referenced object, and dereferencing the pointer to the loaded referenced object.
Claim 8
Dependent Claim 160 words
A computer-readable medium whose contents cause a computer system to swizzle a persistent pointer to a referenced object using an indirection slot and using smart pointers adapted to contain either a pointer to the indirection slot or a pointer to a loaded referenced object by performing the steps of receiving a request to swizzle a persistent pointer; in response to the receiving step: copying the persistent pointer to the indirection slot, and replacing the original persistent pointer with a smart pointer containing a pointer to the indirection slot; detecting an attempt to dereference the smart pointer; and in response to the detecting step: loading the referenced object using the persistent pointer stored in the indirection slot, replacing the persistent pointer in the indirection slot with a pointer to the loaded referenced object, replacing the pointer to the indirection slot in the smart pointer with the pointer to the loaded referenced object, and dereferencing the pointer to the loaded referenced object.
Claim 9
Dependent Claim 52 words
The computer-readable medium of claim 6 wherein the contents of the computer-readable medium further cause the computer system to perform the steps of: detecting a second attempt to dereference the smart pointer; and in response to the detecting step, dereferencing the pointer to the loaded referenced object contained in the smart pointer.
Claim 10
Dependent Claim 85 words
The computer-readable medium of claim 6 wherein one or more additional smart pointers containing pointers to the loaded referenced object may have been created, and wherein the contents of the computer-readable medium further cause the computer system to perform the steps of: receiving a request to idle the loaded referenced object; and in response to the receiving step, for each smart pointer containing a pointer to the loaded referenced object, replacing the pointer to the loaded referenced object with a pointer to the indirection slot.
Claim 11
Dependent Claim 99 words
The computer-readable medium of claim 6 wherein the contents of the computer-readable medium further cause the computer to perform the steps of, after the step of replacing the pointer to the loaded referenced object with a pointer to the indirection slot: detecting a second attempt to dereference the smart pointer; and in response to the step of detecting a second attempt to dereference the smart pointer: replacing the pointer to the indirection slot and the smart pointer with the pointer to the loaded reference object stored in the indirection slot, and dereferencing the pointer to the loaded referenced object.
Claim 12
Dependent Claim 377 words
A memory device containing a pointer swizzling data structure usable by a referencing program to access a referenced object provided by an object server, the pointer swizzling data structure comprising: an indirection slot, comprising: an indication of whether the indirection slot contains an indication of the location in the memory device of the referenced object or an object identifier usable to retrieve the referenced object from the object server, and an identifier usable to obtain the referenced object, which is an indication of the location of the referenced object in the memory device if the indication of whether the indirection slot contains an indication of the location of the referenced object in the memory device of the referenced object or an indication of the location in the object server indicates that the indirection slot contains an indication of the location in the memory device of the referenced object, and which is an object identifier usable to retrieve the referenced object from the object server if the indication of whether the indirection slot contains an indication of the location of the referenced object in the memory device or an object identifier usable to retrieve the referenced object from the object server indicates that the indirection slot contains an object identifier usable to retrieve the referenced object from the object server; and a reference to a referenced object, comprising: an indication of whether the reference represents a reference to a referenced object as a direct pointer or as an indirect pointer, and a pointer, which is a direct pointer containing an indication of the location of the object in the main memory if the indication of whether the reference represents a reference to a referenced object as a direct pointer or as an indirect pointer indicates that the reference represents a reference to a referenced object as a direct pointer, and which is an indirect pointer containing an indication of the location of a direct pointer that itself contains an indication of the location of the object in the main memory if the indication of whether the reference represents a reference to a referenced object as a direct pointer or as an indirect pointer indicates that the reference represents a reference to a referenced object as an indirect pointer.
Claim 13
Dependent Claim 377 words
A memory device containing a pointer swizzling data structure usable by a referencing program to access a referenced object provided by an object server, the pointer swizzling data structure comprising: an indirection slot, comprising: an indication of whether the indirection slot contains an indication of the location in the memory device of the referenced object or an object identifier usable to retrieve the referenced object from the object server, and an identifier usable to obtain the referenced object, which is an indication of the location of the referenced object in the memory device if the indication of whether the indirection slot contains an indication of the location of the referenced object in the memory device of the referenced object or an indication of the location in the object server indicates that the indirection slot contains an indication of the location in the memory device of the referenced object, and which is an object identifier usable to retrieve the referenced object from the object server if the indication of whether the indirection slot contains an indication of the location of the referenced object in the memory device or an object identifier usable to retrieve the referenced object from the object server indicates that the indirection slot contains an object identifier usable to retrieve the referenced object from the object server; and a reference to a referenced object, comprising: an indication of whether the reference represents a reference to a referenced object as a direct pointer or as an indirect pointer, and a pointer, which is a direct pointer containing an indication of the location of the object in the main memory if the indication of whether the reference represents a reference to a referenced object as a direct pointer or as an indirect pointer indicates that the reference represents a reference to a referenced object as a direct pointer, and which is an indirect pointer containing an indication of the location of a direct pointer that itself contains an indication of the location of the object in the main memory if the indication of whether the reference represents a reference to a referenced object as a direct pointer or as an indirect pointer indicates that the reference represents a reference to a referenced object as an indirect pointer.
Claim 14
Dependent Claim 205 words
A computer system for facilitating access by a referencing program to a referenced object provided by an object server using a pointer swizzling data structure, comprising: a processor for executing the referencing program; and a memory, the memory containing: at least a portion of the referencing program, an indication of whether the swizzled reference data structure represents a reference to a referenced object as a direct pointer or as an indirect pointer, if the indication of whether the swizzled reference data structure represents a reference to a referenced object as a direct pointer or as an indirect pointer indicates that the swizzled reference data structure represents a reference to a referenced object as a direct pointer, a direct pointer containing an indication of the location of the object in the main memory, and if the indication of whether the swizzled reference data structure represents a reference to a referenced object as a direct pointer or as an indirect pointer indicates that the swizzled reference data structure represents a reference to a referenced object as an indirect pointer, an indirect pointer containing an indication of the location of a direct pointer that itself contains an indication of the location of the object in the main memory.
Claim 15
Dependent Claim 205 words
A computer system for facilitating access by a referencing program to a referenced object provided by an object server using a pointer swizzling data structure, comprising: a processor for executing the referencing program; and a memory, the memory containing: at least a portion of the referencing program, an indication of whether the swizzled reference data structure represents a reference to a referenced object as a direct pointer or as an indirect pointer, if the indication of whether the swizzled reference data structure represents a reference to a referenced object as a direct pointer or as an indirect pointer indicates that the swizzled reference data structure represents a reference to a referenced object as a direct pointer, a direct pointer containing an indication of the location of the object in the main memory, and if the indication of whether the swizzled reference data structure represents a reference to a referenced object as a direct pointer or as an indirect pointer indicates that the swizzled reference data structure represents a reference to a referenced object as an indirect pointer, an indirect pointer containing an indication of the location of a direct pointer that itself contains an indication of the location of the object in the main memory.

References Cited (Backward Citations)

US5398334A Cited
US5463770A Cited
US5590327A Cited
US5692183A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2001-08-10 2002-02-09 2002-08-11 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2005-08-10 2006-02-09 2006-08-11 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2009-08-10 2010-02-09 2010-08-11 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag