Abstract
Persistent programming languages exhibit several requirements that affect the generation of native code, namely: garbage collection; arbitrary persistence of code, data and processes; dynamic binding; and the introduction of new code into a running system. The problems of garbage collection are not unique to persistent systems and are well understood: both code and data may move during a computation if a compacting collector is employed. However, the problems of garbage collection are exacerbated in persistent systems which must support garbage collection of both RAM resident and disk resident data. Some persistent systems support a single integrated environment in which the compiled code and data is manipulated in a uniform manner, necessitating that compiled code be stored in the object store. Furthermore, some systems assume that the entire state of a running program is resident in a persistent store; in these systems it may be necessary to preserve the state of a program at an arbitrary point in its execution and resume it later. Persistent systems must support some dynamic binding in order to accommodate change. Thus code must be capable of binding to arbitrary data at a variety of times. This introduces the additional complexity that code must be able to call code contained in the persistent store produced by another compilation. In this paper native code generation techniques using C as a target language for persistent languages are presented. The techniques described solve all of the problems described above. They may therefore be applied to any language with these or a subset of these features.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Albano, A., Cardelli, L. and Orsini, R. “Galileo: a Strongly Typed, Interactive Conceptual Language”, Association for Computing Machinery Transactions on Database Systems, vol 10, 2, pp. 230–260, 1985.
Brown, A. L., Carrick, R., Connor, R. C. H., Dearie, A. and Morrison, R. “The Persistent Abstract Machine”, Universities of Glasgow and St Andrews, Technical Report PPRR-59-88, 1988.
Carey, M., DeWitt, D. and McNaughton, J. “The 007 Benchmark”, SIGMOD, vol 5, 3, 1993.
Connor, R., Brown, A., Carrick, R., Dearie, A. and Morrison, R. “The Persistent Abstract Machine”, Proceedings of the Third International Workshop on Persistent Object Systems, Newcastle, Australia, Springer-Verlag, pp. 353–366 1989.
Cutts, Q. “Deviering the Benefits of Persistence to System Construction and Execution”, Ph.D. thesis, Computational Science, St Andrews, 1994.
Dearie, A. “Constructing Compilers in a Persistent Environment”, Universities of Glasgow and St Andrews, Technical Report PPRR-51-87, 1987.
Dearie, A. and Brown, A. L. “Safe Browsing in a Strongly Typed Persistent Environment”, The Computer Journal, vol 31, 6, pp. 540–545, 1988.
Farkas, A. and Dearie, A. “The Octopus Model and its Implementation”, 17th Australian Computer Science Conferenc, Australian Computer Science Communications, vol 16, pp. 581–590, 1994.
Kernighan, B. W. and Ritchie, D. M. “The C programming language”, Prentice-Hall, 1978.
Matthes, F. and Schmidt, J. W. “The Type System of DBPL”, Proceedings of the Second International Workshop on Database Programming Languages, Portland, Oregan, Morgan Kaufmann, pp. 219–225, 1989.
Morrison, R., Brown, A. L., Connor, R. C. H. and Dearie, A. “The Napier88 Reference Manual”, University of St Andrews, Technical Report PPRR-77-89 1989.
Morrison, R., Dearie, A., Connor, R. C. H. and Brown, A. L. “An Ad-Hoc Approach to the Implementation of Polymorphism”, Transactions on Programming Languages and Systems, vol 13, 3, pp. 342–371, 1991.
Peyton-Jones, S. “The implementation of functional languages”, Prentice-Hall 1987.
R. Stallman, R. “Using and Porting GNU CC”, Free Software Foundation, Technical Report 1991.
Sites, R. L. “Alpha Architecture Reference Manual”, Digital Press, 1992.
Stallman, R. 1993.
Sun Microsystems Inc. “The SPARC Architecture Manual, Version 7”, 1987.
Vaughan, F., Schunke, T., Koch, B., Dearie, A., Marlin, C. and Barter, C. “Casper: A Cached Architecture Supporting Persistence”, Computing Systems, vol 5, 3, California, 1992.
Weicker, R. P. “Dhrystone: A Synthetic Systems Programming Benchmark.”, vol 27, 10, Communications of the ACM, pp. 1013–1030, 1984.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 1995 British Computer Society
About this paper
Cite this paper
Bushell, S.J., Dearle, A., Brown, A.L., Vaughan, F.A. (1995). Using C as a Compiler Target Language for Native Code Generation in Persistent Systems. In: Atkinson, M., Maier, D., Benzaken, V. (eds) Persistent Object Systems. Workshops in Computing. Springer, London. https://doi.org/10.1007/978-1-4471-2122-0_15
Download citation
DOI: https://doi.org/10.1007/978-1-4471-2122-0_15
Publisher Name: Springer, London
Print ISBN: 978-3-540-19912-0
Online ISBN: 978-1-4471-2122-0
eBook Packages: Springer Book Archive