IP Library Granted Patent US 9,250,874
Granted Patent B1
US 9,250,874 · App. 14/024,592 · Granted Feb 2, 2016

Sharing property descriptor information between object maps

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,250,874
App. No.
14/024,592
Granted
Feb 2, 2016
Kind
B1
Abstract

A system and method is disclosed for sharing type information between object maps. When an object data structure is modified in a dynamic programming environment to change an initial number of object properties a child object map for the modified object data structure is generated based on a parent object map for the unmodified object data structure, and a descriptor array associated with the base object map is shared with the child object map. The descriptor array is dynamically altered according to the modified object data structure, and access to the descriptor array is limited from the parent object map in accordance with the initial number of object properties of the unmodified object data structure.

Claims (66)

1. A computer-implemented method for sharing property descriptor information, comprising:

modifying an object data structure in a dynamic programming environment to change an initial number of object properties provided by the object data structure;

generating, in response to modifying the object data structure, a child object map for the modified object data structure, the child object map being a child map of a parent object map for the unmodified object data structure;

sharing a descriptor array associated with the parent object map with the child object map in connection with generating the child object map;

altering the descriptor array according to the modified object data structure; and

limiting access to the descriptor array from the parent object map in accordance with the initial number of object properties of the unmodified object data structure.

2. The computer-implemented method of claim 1 , wherein modifying the object data structure comprises adding a new object property, wherein altering the descriptor array comprises adding a new property descriptor for the new object property to the descriptor array.

3. The computer-implemented method of claim 2 , further comprising:

on adding the new object property, appending the descriptor to an end of the descriptor array, the descriptor comprising a key and a pointer, the key being associated with an identifier for the new object property, and each pointer in the descriptor array designates a position in the descriptor array of a key that would otherwise be at a current position of the pointer within the descriptor array when a binary search is performed on the descriptor array.

4. The computer-implemented method of claim 2 , wherein sharing the descriptor array comprises:

copying the descriptor array from the parent object map to the child object map;

adding the new property descriptor to the end of the descriptor array in the c object map to create a modified descriptor array; and

overwriting the descriptor array in the parent object map with the modified descriptor array.

5. The computer-implemented method of claim 2 , wherein sharing the descriptor array comprises:

providing a pointer to the descriptor array in the child object map;

designating the child object map as the owner of the descriptor array; and

designating the parent object map as no longer owning the descriptor array.

6. The computer-implemented method of claim 5 , further comprising:

generating a second child object map for a second modified Object data structure, the second child object map based on the parent object map;

copying the descriptor array from the parent object map to the second child object map to generate a second descriptor array for the second child object map; and

designating the second child object map as the owner of the second descriptor array.

7. The computer-implemented method of claim 5 , further comprising:

before sharing the descriptor array, determining that the parent object map owns the descriptor array.

8. The computer-implemented method of claim 5 , wherein limiting access to the descriptor array comprises setting a number of property descriptors in the descriptor array that can be accessed through the parent object map, the child object map having access to at least one more descriptor than the parent object map.

9. The computer-implemented method of claim 8 , further comprising:

designating, as protected from garbage collection, references associated with the descriptor array that correspond to properties of an object instance while not protecting references associated with the descriptor array that do not correspond to an object instance.

10. The computer-implemented method of claim 5 , further comprising:

before adding the new property descriptor to the descriptor array, determining whether the descriptor array is full;

adding the new property descriptor array if the descriptor array is not full; and

if the descriptor array is full, allocating a predetermined amount of additional memory for the descriptor array, and adding the new property descriptor to the descriptor array.

11. A non-transitory machine-readable medium having instructions stored thereon that, when executed, cause a machine to perform a method, the method comprising:

modifying an object data structure in a dynamic programming environment to add a new object property to an initial number of object properties provided by the object data structure;

generating, in response to modifying the object data structure, a child object map for the modified object data structure, the child object map being a child map of a parent object map for the unmodified object data structure;

sharing a descriptor array associated with the parent object map with the child object map in connection with generating the child object map;

adding a new property descriptor for the new object property to the descriptor array; and

limiting access to the descriptor array from the parent object map in accordance with the initial number of object properties of the unmodified object data structure.

12. The non-transitory machine-readable medium of claim 11 , wherein the new property descriptor is appended to an end of the descriptor array, the new property descriptor comprising a key and a pointer, the key being associated with an identifier for the new object property, wherein each pointer in the descriptor array designates a position in the descriptor array of a key that would otherwise be at a current position of the pointer within the descriptor array when a binary search is performed on the descriptor array.

13. The non-transitory machine-readable medium of claim 11 , wherein sharing the descriptor array comprises:

copying the descriptor array from the parent object map to the child object map;

adding the new property descriptor to the end of the descriptor array in the child object map to create a modified descriptor array; and

overwriting the descriptor array in the parent object map with the modified descriptor array.

14. The non-transitory machine-readable medium of claim 11 , wherein sharing the descriptor array comprises:

providing a pointer to the descriptor array in the child object map;

designating the child object map as the owner of the descriptor array; and

designating the parent object map as no longer owning the descriptor array.

15. The non-transitory machine-readable medium of claim 14 , the method further comprising:

generating a second child object map for a second modified object data structure, the second child object map based on the parent object map;

copying the descriptor array from the parent object map to the second child object map to generate a second descriptor array for the second child object map; and

designating the second child object map as the owner of the second descriptor array.

16. The non-transitory machine-readable medium of claim 14 , the method further comprising:

before sharing the descriptor array, determining that the parent object map owns the descriptor array.

17. The non-transitory machine-readable medium of claim 14 , wherein limiting access to the descriptor array comprises setting a number of descriptors in the descriptor array that can be accessed through the parent Object map, the child Object map having access to at least one more descriptor than the parent object map.

18. The non-transitory machine-readable medium of claim 17 , the method further comprising:

designating, as protected from garbage collection, references associated with the descriptor array that correspond to properties of an object instance while not protecting references associated with the descriptor array that do not correspond to an object instance.

19. The non-transitory machine-readable medium of claim 14 , the method further comprising:

before adding the new property descriptor to the descriptor array, determining whether the descriptor array is full;

adding the new property descriptor array if the descriptor array is not full; and

if the descriptor array is full, allocating a predetermined amount of additional memory for the descriptor array, and adding the new property descriptor to the descriptor array.

20. A system, comprising:

one or more processors; and

a memory including instructions that, when executed by the one or more processors, cause the one or more processors to facilitate the steps of:

modifying an object data structure in a dynamic programming environment to change an initial number of object properties provided by the object data structure;

generating, in response to modifying the object data structure, a child object map for the modified object data structure, the child object map being a child map of a parent object map for the unmodified object data structure;

sharing a descriptor array associated with the parent Object map with e child Object map in connection with generating the child object map;

altering the descriptor array according to the modified object data structure; and

limiting access to the descriptor array from the parent object map in accordance with the initial number of object properties of the unmodified object data structure.

Assignments (2)
CHANGE OF NAME Recorded Oct 2, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044566/0657 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 24, 2013
From: VERWAEST, TOON WIM JAN; CLIFFORD, DANIEL KENNETH
To: GOOGLE INC.
Reel/Frame 031272/0697 →