METHODS, SYSTEMS, AND COMPUTER PROGRAM PRODUCTS FOR GENERATING AND USING OBJECT MODULES
Methods, systems, and computer program products for generating and using object modules are described According to an exemplary embodiment, a method for compiling program source code components for use in an execution environment including a structured data storage system (SDSS) providing at least part of the execution environment for the program and capable of accessing storage locations of a data store structured in conformance with a schema known to the SDSS is described. The method includes identifying an addressable entity in a source code component of the program. Information corresponding to the addressable entity is generated that allows a compiled representation of the addressable entity to be stored at a storage location of the SDSS associated with a corresponding logical identifier. A reference to the addressable entity is identified in the source code component. Information corresponding to the reference is generated that allows a compiled representation of the reference to be associated with the logical identifier to provide access to the compiled representation of the addressable entity within the execution environment via the logical identifier when the compiled representation of the addressable entity is stored at the storage location.
1 . A method for compiling program source code components for use in an execution environment including a structured data storage system (SDSS) providing at least part of the execution environment for the program and capable of accessing storage locations of a data store structured in conformance with a schema known to the SDSS, the method comprising:
identifying an addressable entity in a source code component of the program;
generating information corresponding to the addressable entity that allows a compiled representation of the addressable entity to be stored at a storage location of the SDSS associated with a corresponding logical identifier;
identifying a reference to the addressable entity in the source code component; and
generating information corresponding to the reference that allows a compiled representation of the reference to be associated with the logical identifier to provide access to the compiled representation of the addressable entity within the execution environment via the logical identifier when the compiled representation of the addressable entity is stored at the storage location.
2 . The method of claim 1 wherein the reference is included in at least one of a variable, a constant, and a source code instruction of the source code component.
3 . The method of claim 2 wherein when the reference is included in a source code instruction of the source code component, the method comprises generating at least one object code instruction, corresponding to the source code instruction, that includes the compiled representation of the reference as an operand to provide access to the compiled representation of the addressable entity during execution of the object code instruction within the execution environment after the compiled representation of the reference is resolved to the storage location by a linker or loader component using the logical identifier.
4 . The method of claim 1 wherein at least one of the generated information corresponding to the compiled representations of the addressable entity and the reference includes a symbol allowing a linker or a loader component to resolve the compiled representation of the reference to the storage location using the logical identifier.
5 . The method of claim 1 wherein the addressable entity includes at least one of a data variable, a data constant, and a code block.
6 . The method of claim 5 wherein the code block corresponds to a set of instructions in the source code component including at least one of a subroutine, a function, a method, and a label.
7 . The method of claim 1 wherein the addressable entity is capable of being the target of at least one of a call and a branch operation of the source code component.
8 . The method of claim 1 wherein the method is performed by at least one of a compiler component and an interpreter component.
9 . The method of claim 1 wherein the generated information corresponding to the addressable entity and the reference is stored in at least one file or library together with SDSS commands prior to loading the at least one file or library into the execution environment.
10 . The method of claim 9 wherein the SDSS commands include SQL commands.
11 . The method of claim 1 wherein an addressable set of source instructions included in the source code component is represented as machine code instructions in a code block storage component of the SDSS when compiled and instance data for the machine code instructions is represented in a code block instance storage component associated with the code block storage component.
12 . The method of claim 11 wherein an instance represented in the code block instance storage component is associated with an invocation of the machine code instructions.
13 . The method of claim 11 wherein an instance in the code block instance storage component includes storage for at least one of an input parameter, an output parameter, a return value, a reference to a constant, a reference to a static or global variable, and a reference associated with an invocation of the machine code instructions.
14 . The method of claim 13 comprising generating object code instructions for invoking an SDSS routine configured to use SDSS commands to create the instance in the code block instance storage component in conformance with the schema.
15 . The method of claim 11 comprising generating object code instructions in the code block storage component that provide access to a data item in an instance in the code block instance storage component allowing the data item to be processed when the machine code instructions are invoked.
16 . The method of claim 1 comprising generating object code instructions for accessing the storage location via the SDSS using at least one stack component.
17 . The method of claim 1 comprising generating object code instructions including commands inherent to the SDSS for accessing the storage location via the SDSS.
18 . A method for linking compiled program object components for use in an execution environment including a structured data storage system (SDSS) providing at least part of the execution environment for the program and capable of accessing storage locations of a data store structured in conformance with a schema known to the SDSS, the method comprising:
scanning an object component of the program to identify a reference to a symbol, defined external to the object component, that is associated with an addressable program entity storable at a storage location of the SDSS;
identifying information defining the symbol in terms of a logical identifier associated with the storage location; and
resolving the reference to the symbol in the object component to the storage location using the logical identifier obtained via the information.
19 . The method of claim 18 wherein the object component is included in a file or a library.
20 . A method for loading a program object component into an execution environment including a structured data storage system (SDSS) providing at least part of the execution environment for the program and capable of accessing storage locations of a data store structured in conformance with a schema known to the SDSS, the method comprising:
scanning a loadable object component of the program to identify information associated with an addressable program entity;
using the information to issue commands to the SDSS to create a storage location in the SDSS associated with a corresponding logical identifier for storing the addressable entity; and
loading the addressable entity into the created storage location in the SDSS to allow access to the addressable entity within the program execution environment via the logical identifier.
21 . The method of claim 20 comprising linking, using the logical identifier, an unresolved reference to the addressable entity to create a resolved SDSS reference, wherein the access to the addressable entity is provided using the resolved SDSS reference.
22 . A compiler component compatible with an execution environment including a structured data storage system (SDSS) providing at least part of the execution environment for a program and capable of accessing storage locations of a data store structured in conformance with a schema known to the SDSS, the compiler component configured for:
identifying an addressable entity in a source code component of the program;
generating information corresponding to the addressable entity that allows a compiled representation of the addressable entity to be stored at a storage location of the SDSS associated with a corresponding logical identifier;
identifying a reference to the addressable entity in the source code component; and
generating information corresponding to the reference that allows a compiled representation of the reference to be associated with the logical identifier to provide access to the compiled representation of the addressable entity within the execution environment via the logical identifier when the compiled representation of the addressable entity is stored at the storage location.
23 . The compiler of claim 22 wherein the reference is included in at least one of a variable, a constant, and a source code instruction of the source code component.
24 . The compiler of claim 23 wherein when the reference is included in a source code instruction of the source code component, the method comprises generating at least one object code instruction, corresponding to the source code instruction, that includes the compiled representation of the reference as an operand to provide access to the compiled representation of the addressable entity during execution of the object code instruction within the execution environment after the compiled representation of the reference is resolved to the storage location by a linker or loader component using the logical identifier.
25 . The compiler of claim 23 22 wherein at least one of the generated information corresponding to the compiled representations of the addressable entity and the reference includes a symbol allowing a linker or a loader component to resolve the compiled representation of the reference to the storage location using the logical identifier.
26 . The compiler of claim 22 wherein the addressable entity includes at least one of a data variable, a data constant, and a code block.
27 . The compiler of claim 26 wherein the code block corresponds to a set of instructions in the source code component including at least one of a subroutine, a function, a method, and a label.
28 . The compiler of claim 22 wherein the addressable entity is capable of being the target of at least one of a call and a branch operation of the source code component.
29 . The compiler of claim 22 wherein the compiler component is included in an interpreter component configured to perform the operations of the compiler component.
30 . The compiler of claim 22 wherein the generated information corresponding to the addressable entity and the reference is stored in at least one file or library together with SDSS commands prior to loading the at least one file or library into the execution environment.
31 . The compiler of claim 30 wherein the SDSS commands include SQL commands.
32 . The compiler of claim 22 wherein an addressable set of source instructions included in the source code component is represented as machine code instructions in a code block storage component of the SDSS when compiled and instance data for the machine code instructions is represented in a code block instance storage component associated with the code block storage component.
33 . The compiler of claim 32 wherein an instance represented in the code block instance storage component is associated with an invocation of the machine code instructions.
34 . The compiler of claim 32 wherein an instance in the code block instance storage component includes storage for at least one of an input parameter, an output parameter, a return value, a reference to a constant, a reference to a static or global variable, and a reference associated with an invocation of the machine code instructions.
35 . The compiler of claim 32 comprising generating object code instructions for invoking an SDSS routine configured to use SDSS commands to create the instance in the code block instance storage component in conformance with the schema.
36 . The compiler of claim 32 comprising generating object code instructions in the code block storage component that provide access to a data item in an instance in the code block instance storage component allowing the data item to be processed when the machine code instructions are invoked.
37 . The compiler of claim 22 , wherein the compiler component is configured for generating object code instructions for accessing the storage location via the SDSS using at least one stack component.
38 . The compiler of claim 22 , wherein the compiler component is configured for generating object code instructions including commands inherent to the SDSS for accessing the storage location via the SDSS
39 . A linker component compatible with an execution environment including a structured data storage system (SDSS) providing at least part of the execution environment for a program and capable of accessing storage locations of a data store structured in conformance with a schema known to the SDSS, the linker component configured for:
scanning an object component of the program to identify a reference to a symbol, defined external to the object component, that is associated with an addressable program entity storable at a storage location of the SDSS;
identifying information defining the symbol in terms of a logical identifier associated with the storage location; and
resolving the reference to the symbol in the object component to the storage location using the logical identifier obtained via the information.
40 . A loader component compatible with an execution environment including a structured data storage system (SDSS) providing at least part of the execution environment for a program and capable of accessing storage locations of a data store structured in conformance with a schema known to the SDSS, the loader component configured for:
scanning a loadable object component of the program to identify information associated with an addressable program entity;
using the information to issue commands to the SDSS to create a storage location in the SDSS associated with a corresponding logical identifier for storing the addressable entity; and
loading the addressable entity into the created storage location in the SDSS to allow access to the addressable entity within the execution environment via the logical identifier.