US10417036B2ActiveUtilityA1

Evaluation techniques for fast access to structured, semi-structured and unstructured data using a virtual machine that provides support for dynamic code generation

74
Assignee: ORACLE INT CORPPriority: Feb 24, 2017Filed: Jan 8, 2018Granted: Sep 17, 2019
Est. expiryFeb 24, 2037(~10.6 yrs left)· nominal 20-yr term from priority
G06F 9/45541G06F 9/4552G06F 8/30G06F 9/45558G06F 16/80G06F 16/20
74
PatentIndex Score
2
Cited by
57
References
20
Claims

Abstract

Computer-implemented techniques described herein provide fast access to structured, semi-structured, and unstructured data using a virtual machine that provides support for dynamic code generation. In an embodiment, a virtual machine allows for the efficient encoding of data objects into hierarchically marked up data. A virtual machine is configured to dynamically create attributes of objects referenced by a body of code and hidden classes used to store attributes of objects referenced by the body of code. The virtual machine will determine whether a hidden class of an object satisfies one or more encoding criteria for encoding instances of objects with the hidden class. Encoding machine code is generated and executed to encode instances of objects with the hidden class. In another embodiment, direct structure decoding enables the generation of efficient machine code that is specialized for accessing only a subset of the input data that is used by an application. A parse operation is received to parse a hierarchical data object and a proxy object is created in a runtime memory space that references the hierarchical data object. It is then determined that the hierarchical data object is syntactically valid, and in response to receiving a request to read a property of the hierarchical data object, a subset of hierarchical data from the hierarchical data object is parsed to materialize a value of the property in the proxy object.

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
       1. A method comprising:
 a virtual machine executing a body of code, wherein said virtual machine is configured to dynamically create attributes of objects referenced by said body of code and hidden classes used to store attributes of said objects referenced by said body code, wherein said virtual machine executing said body of code includes:
 determining whether a particular hidden class satisfies one or more encoding criteria for generating encoding machine code for encoding one or more particular instances of said hidden class; 
 in response to determining that said particular hidden class satisfies said one or more encoding criteria:
 generating a particular encoding machine code to encode said one or more particular instances; 
 executing said particular encoding machine code to encode a particular instance of said one or more particular instances; 
 
 
 wherein the method is performed by one or more computing devices. 
 
     
     
       2. The method of  claim 1 , further comprising: generating an intermediate representation based on the attributes of objects referenced by said body of code. 
     
     
       3. The method of  claim 2 , wherein determining whether a particular hidden class satisfies one or more encoding criteria for generating encoding machine code for encoding one or more particular instances of said hidden class includes determining whether said hidden class matches an expected hidden class mapped to said intermediate representation. 
     
     
       4. The method of  claim 2 , wherein generating said particular encoding machine code to encode said one or more particular instances includes generating said particular encoding machine code based on said intermediate representation. 
     
     
       5. The method of  claim 1 , further comprising: in response to determining that said particular hidden class does not satisfy said one or more encoding criteria:
 generating generic encoding machine code to encode said one or more particular instances; 
 executing said generic encoding machine code to encode a particular instance of said one or more particular instances. 
 
     
     
       6. The method of  claim 1 , further comprising:
 receiving a parse operation to parse a hierarchical data object; 
 creating a proxy object in a runtime memory space that references the hierarchical data object; 
 determining that the hierarchical data object is syntactically valid; 
 in response to receiving a first request to read a particular property of the hierarchical data object:
 parsing a subset of hierarchical data from the hierarchical data object to materialize a value of the particular property in the proxy object. 
 
 
     
     
       7. The method of  claim 6 , wherein determining that the hierarchical data object is syntactically valid includes determining that the hierarchical data object is syntactically valid without materializing the value of the particular property in the runtime memory space. 
     
     
       8. The method of  claim 6 , further comprising:
 in response to receiving a second request to read the particular property of the hierarchical data object:
 returning the value of the particular property from the proxy object. 
 
 
     
     
       9. The method of  claim 6 , wherein determining that the hierarchical data object is syntactically valid includes storing a parsing index in the proxy object. 
     
     
       10. The method of  claim 9 , wherein the parsing index includes an array of initial parsing positions of one or more property values in the hierarchical data object. 
     
     
       11. A non-transitory computer-readable storage medium storing sequences of instructions that, when executed by one or more processors, cause:
 a virtual machine executing a body of code, wherein said virtual machine is configured to dynamically create attributes of objects referenced by said body of code and hidden classes used to store attributes of said objects referenced by said body code, wherein said virtual machine executing said body of code includes:
 determining whether a particular hidden class satisfies one or more encoding criteria for generating encoding machine code for encoding one or more particular instances of said hidden class; 
 in response to determining that said particular hidden class satisfies said one or more encoding criteria:
 generating a particular encoding machine code to encode said one or more particular instances; 
 executing said particular encoding machine code to encode a particular instance of said one or more particular instances. 
 
 
 
     
     
       12. The non-transitory computer-readable storage medium of  claim 11 , the sequences of instructions including instructions that, when executed by said one or more processors, cause:
 generating an intermediate representation based on the attributes of objects referenced by said body of code. 
 
     
     
       13. The non-transitory computer-readable storage medium of  claim 12 , wherein determining whether a particular hidden class satisfies one or more encoding criteria for generating encoding machine code for encoding one or more particular instances of said hidden class includes determining whether said hidden class matches an expected hidden class mapped to said intermediate representation. 
     
     
       14. The non-transitory computer-readable storage medium of  claim 12 , wherein generating said particular encoding machine code to encode said one or more particular instances includes generating said particular encoding machine code based on said intermediate representation. 
     
     
       15. The non-transitory computer-readable storage medium of  claim 11 , the sequences of instructions including instructions that, when executed by said one or more processors, cause:
 in response to determining that said particular hidden class does not satisfy said one or more encoding criteria:
 generating generic encoding machine code to encode said one or more particular instances; 
 executing said generic encoding machine code to encode a particular instance of said one or more particular instances. 
 
 
     
     
       16. The non-transitory computer-readable storage medium of  claim 11 , the sequences of instructions including instructions that, when executed by said one or more processors, cause:
 receiving a parse operation to parse a hierarchical data object; 
 creating a proxy object in a runtime memory space that references the hierarchical data object; 
 determining that the hierarchical data object is syntactically valid; 
 in response to receiving a first request to read a particular property of the hierarchical data object:
 parsing a subset of hierarchical data from the hierarchical data object to materialize a value of the particular property in the proxy object. 
 
 
     
     
       17. The non-transitory computer-readable storage medium of  claim 16 , wherein determining that the hierarchical data object is syntactically valid includes determining that the hierarchical data object is syntactically valid without materializing the value of the particular property in the runtime memory space. 
     
     
       18. The non-transitory computer-readable storage medium of  claim 16 , the sequences of instructions including instructions that, when executed by said one or more processors, cause:
 in response to receiving a second request to read the particular property of the hierarchical data object:
 returning the value of the particular property from the proxy object. 
 
 
     
     
       19. The non-transitory computer-readable storage medium of  claim 16 , wherein determining that the hierarchical data object is syntactically valid includes storing a parsing index in the proxy object. 
     
     
       20. The non-transitory computer-readable storage media of  claim 19 , wherein the parsing index includes an array of initial parsing positions of one or more property values in the hierarchical data object.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.