Claims
- 1. A method for performing dynamic stitching of a new module of executable code in a parallel processing environment, where said new module and another module previously loaded share access to a data object, said access being performed using a first data pointer associated with the new module and having a first pointer value and a second data pointer associated with the other module and having a second pointer value, the method comprising the steps of:
loading said new module; creating a new data object for shared access by said new module and by the other module in place of an old data object; updating a first data freshness indicator in accordance with creation of the new data object; associating a value of the first freshness indicator with the old data object; establishing the first pointer value to permit access to the new data object by said new module; modifying the second pointer value, thereby terminating reference to the old data object and substituting reference to the new data object; updating a second data freshness indicator in accordance with access by the other module to shared data after creation of the new data object; and deleting the old data object when a comparison of said second data freshness indicator with the value associated with the old data object indicates that access to the old data object is not required.
- 2. The method of claim 1, wherein the first pointer value and the second pointer value are atomic data, so that said modifying of the second pointer value is an atomic operation.
- 3. The method of claim 1, wherein said updating of the first data freshness indicator comprises incrementing the first data freshness indicator by 1.
- 4. The method of claim 1, further comprising the steps of:
establishing a list of data objects subject to deletion; and adding the old data object to said list after creation of the new data object.
- 5. The method of claim 1, wherein said step of updating the second data freshness indicator comprises setting the second data freshness indicator equal to the first data freshness indicator.
- 6. The method of claim 1, wherein said new module and a plurality of other modules previously loaded share access to the new data object, the modules comprise a plurality of contexts, and a separate second data freshness indicator, characterized as a context freshness indicator, is associated with each context.
- 7. The method of claim 6, wherein said deleting is performed after the context freshness indicators have been updated so that all the context freshness indicators are not less than the value associated with the old data object.
- 8. A method for performing dynamic stitching of a new module of executable code in a parallel processing environment, where said new module and another module previously loaded include accessing code which when executed causes access to a data object, the method comprising the steps of:
receiving an instruction to load the new module; preventing initiation of access to the data object when the instruction is received, while permitting continued access to the data object in progress when the instruction is received; loading the new module after said continued access is concluded; and permitting initiation of access to the data object after said loading is performed.
- 9. The method of claim 8 wherein said loading step further comprises modifying the data object.
- 10. The method of claim 8, further comprising the steps of:
establishing a usage counter associated with the data object; incrementing said usage counter when access to the data object is initiated prior to said preventing step; decrementing said usage counter when access to the data object is concluded prior to said preventing step; changing a value of said usage counter to the negative thereof when said instruction is received; incrementing the negative value when a continued access to the data object is concluded; comparing the value of said usage counter with a predetermined value to determine whether all said continued access is concluded; and resetting the value of said usage counter when all said continued access is concluded.
- 11. The method of claim 10, wherein the value of said usage counter and said predetermined value are atomic data, so that said incrementing, decrementing, changing, comparing and resetting are atomic operations.
- 12. The method of claim 10, wherein said loading and permitting steps are performed after said resetting step.
- 13. The method of claim 10, wherein a negative value of said usage counter indicates that initiation of access to the data object is prevented, and a value of said usage counter equal to said predetermined value indicates that initiation of access to the data object may be resumed.
- 14. The method of claim 8, wherein said preventing comprises blocking invocation of the accessing code, and said permitting continued access to the data object comprises permitting continued execution of the accessing code.
- 15. A method for unloading a target module of executable code in a parallel processing environment, where the target module and another module share access to a data object, said access being performed using a data pointer associated with the target module and having a pointer value, and where the target module and the other module comprise a context having a freshness indicator associated therewith, the method comprising the steps of:
receiving an instruction to unload the target module; preventing initiation of access to the target module when the instruction is received, while permitting continued access to the target module in progress when the instruction is received; updating the freshness indicator; deleting old data associated with the target module in accordance with an updated value of the freshness indicator; modifying the pointer value after all access to the target module is concluded, thereby terminating reference to the data object by the target module; and unloading the target module.
- 16. The method of claim 15, wherein said preventing comprises blocking invocation of the code in the target module, and said permitting comprises permitting continued execution of the code in the target module.
- 17. The method of claim 15, wherein the old data has a freshness value associated therewith, and said deleting is performed in accordance with said freshness value being not greater than the updated value of the freshness indicator.
- 18. A computer-readable storage medium having stored therein instructions for performing a method for performing dynamic stitching of a new module of executable code in a parallel processing environment, where said new module and another module previously loaded share access to a data object, said access being performed using a first data pointer associated with the new module and having a first pointer value and a second data pointer associated with the other module and having a second pointer value, the method comprising the steps of:
loading said new module; creating a new data object for shared access by said new module and by the other module in place of an old data object; updating a first data freshness indicator in accordance with creation of the new data object; associating a value of the first freshness indicator with the old data object; establishing the first pointer value to permit access to the new data object by said new module; modifying the second pointer value, thereby terminating reference to the old data object and substituting reference to the new data object; updating a second data freshness indicator in accordance with access by the other module to shared data after creation of the new data object; and deleting the old data object when a comparison of said second data freshness indicator with the value associated with the old data object indicates that access to the old data object is not required.
- 19. The computer-readable storage medium of claim 18, wherein the first pointer value and the second pointer value are atomic data, so that said modifying of the second pointer value is an atomic operation.
- 20. The computer-readable storage medium of claim 18, wherein said updating of the first data freshness indicator comprises incrementing the first data freshness indicator by 1.
- 21. The computer-readable storage medium of claim 18, wherein the method further comprises the steps of:
establishing a list of data objects subject to deletion; and adding the old data object to said list after creation of the new data object.
- 22. The computer-readable storage medium of claim 18, wherein said step of updating the second data freshness indicator comprises setting the second data freshness indicator equal to the first data freshness indicator.
- 23. The computer-readable storage medium of claim 18, wherein said new module and a plurality of other modules previously loaded share access to the new data object, the modules comprise a plurality of contexts, and a separate second data freshness indicator, characterized as a context freshness indicator, is associated with each context.
- 24. The computer-readable storage medium of claim 23, wherein said deleting is performed after the context freshness indicators have been updated so that all the context freshness indicators are not less than the value associated with the old data object.
- 25. A computer-readable storage medium having stored therein instructions for performing a method for performing dynamic stitching of a new module of executable code in a parallel processing environment, where said new module and another module previously loaded include accessing code which when executed causes access to a data object, the method comprising the steps of:
receiving an instruction to load the new module; preventing initiation of access to the data object when the instruction is received, while permitting continued access to the data object in progress when the instruction is received; loading the new module after said continued access is concluded; and permitting initiation of access to the data object after said loading is performed.
- 26. The computer-readable storage medium of claim 25, wherein said loading step further comprises modifying the data object.
- 27. The computer-readable storage medium of claim 25, wherein the method further comprises the steps of:
establishing a usage counter associated with the data object; incrementing said usage counter when access to the data object is initiated prior to said preventing step; decrementing said usage counter when access to the data object is concluded prior to said preventing step; changing a value of said usage counter to the negative thereof when said instruction is received; incrementing the negative value when a continued access to the data object is concluded; comparing the value of said usage counter with a predetermined value to determine whether all said continued access is concluded; and resetting the value of said usage counter when all said continued access is concluded.
- 28. The computer-readable storage medium of claim 27, wherein the value of said usage counter and said predetermined value are atomic data, so that said incrementing, decrementing, changing, comparing and resetting are atomic operations.
- 29. The computer-readable storage medium of claim 27, wherein said loading and permitting steps are performed after said resetting step.
- 30. The computer-readable storage medium of claim 27, wherein a negative value of said usage counter indicates that initiation of access to the data object is prevented, and a value of said usage counter equal to said predetermined value indicates that initiation of access to the data object may be resumed.
- 31. The computer-readable storage medium of claim 25, wherein said preventing comprises blocking invocation of the accessing code, and said permitting continued access to the data object comprises permitting continued execution of the accessing code.
- 32. A computer-readable storage medium having stored therein instructions for performing a method for unloading a target module of executable code in a parallel processing environment, where the target module and another module share access to a data object, said access being performed using a data pointer associated with the target module and having a pointer value, and where the target module and the other module comprise a context having a freshness indicator associated therewith, the method comprising the steps of:
receiving an instruction to unload the target module; preventing initiation of access to the target module when the instruction is received, while permitting continued access to the target module in progress when the instruction is received; updating the freshness indicator; deleting old data associated with the target module in accordance with an updated value of the freshness indicator; modifying the pointer value after all access to the target module is concluded, thereby terminating reference to the data object by the target module; and unloading the target module.
- 33. The computer-readable storage medium of claim 32, wherein said preventing comprises blocking invocation of the code in the target module, and said permitting comprises permitting continued execution of the code in the target module.
- 34. The computer-readable storage medium of claim 32, wherein the old data has a freshness value associated therewith, and said deleting is performed in accordance with said freshness value being not greater than the updated value of the freshness indicator.
- 35. A computer program product embodying instructions for performing a method for performing dynamic stitching of a new module of executable code in a parallel processing environment, where said new module and another module previously loaded share access to a data object, said access being performed using a first data pointer associated with the new module and having a first pointer value and a second data pointer associated with the other module and having a second pointer value, the method comprising the steps of:
loading said new module; creating a new data object for shared access by said new module and by the other module in place of an old data object; updating a first data freshness indicator in accordance with creation of the new data object; associating a value of the first freshness indicator with the old data object; establishing the first pointer value to permit access to the new data object by said new module; modifying the second pointer value, thereby terminating reference to the old data object and substituting reference to the new data object; updating a second data freshness indicator in accordance with access by the other module to shared data after creation of the new data object; and deleting the old data object when a comparison of said second data freshness indicator with the value associated with the old data object indicates that access to the old data object is not required.
- 36. The computer program product of claim 35, wherein the first pointer value and the second pointer value are atomic data, so that said modifying of the second pointer value is an atomic operation.
- 37. The computer program product of claim 35, wherein said updating of the first data freshness indicator comprises incrementing the first data freshness indicator by 1.
- 38. The computer program product of claim 35, wherein the method further comprises the steps of:
establishing a list of data objects subject to deletion; and adding the old data object to said list after creation of the new data object.
- 39. The computer program product of claim 35, wherein said step of updating the second data freshness indicator comprises setting the second data freshness indicator equal to the first data freshness indicator.
- 40. The computer program product of claim 35, wherein said new module and a plurality of other modules previously loaded share access to the new data object, the modules comprise a plurality of contexts, and a separate second data freshness indicator, characterized as a context freshness indicator, is associated with each context.
- 41. The computer program product of claim 40, wherein said deleting is performed after the context freshness indicators have been updated so that all the context freshness indicators are not less than the value associated with the old data object.
- 42. A computer program product embodying instructions for performing a method for performing dynamic stitching of a new module of executable code in a parallel processing environment, where said new module and another module previously loaded include accessing code which when executed causes access to a data object, the method comprising the steps of:
receiving an instruction to load the new module; preventing initiation of access to the data object when the instruction is received, while permitting continued access to the data object in progress when the instruction is received; loading the new module after said continued access is concluded; and permitting initiation of access to the data object after said loading is performed.
- 43. The computer program product of claim 42, wherein said loading step further comprises modifying the data object.
- 44. The computer program product of claim 42, wherein the method further comprises the steps of:
establishing a usage counter associated with the data object; incrementing said usage counter when access to the data object is initiated prior to said preventing step; decrementing said usage counter when access to the data object is concluded prior to said preventing step; changing a value of said usage counter to the negative thereof when said instruction is received; incrementing the negative value when a continued access to the data object is concluded; comparing the value of said usage counter with a predetermined value to determine whether all said continued access is concluded; and resetting the value of said usage counter when all said continued access is concluded.
- 45. The computer program product of claim 44, wherein the value of said usage counter and said predetermined value are atomic data, so that said incrementing, decrementing, changing, comparing and resetting are atomic operations.
- 46. The computer program product of claim 44, wherein said loading and permitting steps are performed after said resetting step.
- 47. The computer program product of claim 44, wherein a negative value of said usage counter indicates that initiation of access to the data object is prevented, and a value of said usage counter equal to said predetermined value indicates that initiation of access to the data object may be resumed.
- 48. The computer program product of claim 42, wherein said preventing comprises blocking invocation of the accessing code, and said permitting continued access to the data object comprises permitting continued execution of the accessing code.
- 49. A computer program product embodying instructions for performing a method for unloading a target module of executable code in a parallel processing environment, where the target module and another module share access to a data object, said access being performed using a data pointer associated with the target module and having a pointer value, and where the target module and the other module comprise a context having a freshness indicator associated therewith, the method comprising the steps of:
receiving an instruction to unload the target module; preventing initiation of access to the target module when the instruction is received, while permitting continued access to the target module in progress when the instruction is received; updating the freshness indicator; deleting old data associated with the target module in accordance with an updated value of the freshness indicator; modifying the pointer value after all access to the target module is concluded, thereby terminating reference to the data object by the target module; and unloading the target module.
- 50. The computer program product of claim 49, wherein said preventing comprises blocking invocation of the code in the target module, and said permitting comprises permitting continued execution of the code in the target module.
- 51. The computer program product of claim 49, wherein the old data has a freshness value associated therewith, and said deleting is performed in accordance with said freshness value being not greater than the updated value of the freshness indicator.
RELATED APPLICATIONS
[0001] This application is related to Application Ser. Nos. 09/597,523, 09/597,524 and 09/597,525, all filed Jun. 20, 2000.
[0002] All of these related applications are assigned to the same assignee as the present application. The disclosures of all these related applications are incorporated herein by reference.