Patent Document ID: 9760549
Application ID: 14108762

Base Claim:
1. A method of processing documents, comprising: parsing, in connection with at least one processor, a document into a plurality constituent nodes, the document including a plurality of Document Object Model (DOM) objects representable in accordance with an object model; storing the parsed constituent nodes in a plurality of cacheable partitions, the cacheable partitions being located in a memory or a non-transitory backing store, wherein a first node of the parsed constituent nodes is stored in a first partition of the plurality of partitions and a second node of the parsed constituent nodes is stored in a second partition of the plurality of partitions, and each said cacheable partition having an associated commit level that initially is set to 0; storing, for each said cacheable partition, an identifier thereof in a partition table list, the identifier(s) in the partition table list collectively identifying the working contents of the document, the partition table list initially being designated as a current partition table list and initially being designated as having a current commit level of 0; handling a request from a user program for an object from the document by identifying the one or more partitions in which nodes corresponding to the requested object are located and instantiating only said requested objects from the identified partition(s) in accordance with the object model; in response to a request for an atomic update to the document: pushing onto a stack, configured to hold one or more previous partition table lists, a copy of the current partition table list; incrementing the current commit level; determining whether a given partition's contents are changed as a result of the atomic update and whether the commit level associated with the given partition does not match the current commit level; and when a given partition's contents are changed as a result of the atomic update and the commit level associated with the given partition does not match the current commit level, copying the given partition's contents to create a new partition with the changed contents and replace the identifier for the given partition in the current partition table list with an identifier for the new partition; and in response to an atomic update being completed: popping from the stack the uppermost partition table list, the popped partition table list being a candidate partition table list; determining partitions in the current partition table list that have associated commit levels that match the current commit level into the candidate partition table list; copying identifiers for any partitions in the current partition table list that have associated commit levels that match the current commit level into the candidate partition table list; replacing the current partition table list with the candidate list; and decrementing the current commit level.

---

Claim 2:
2. The method of claim 1 , further comprising, in response to all atomic updates being completed, repeating, until a determination is made that the stack is empty: popping from the stack the uppermost partition table list; copying identifiers for any partitions in the current partition table list that have associated commit levels that match the current commit level into the candidate partition table list; replacing the current partition table list with the candidate list; and decrementing the current commit level.