Using C as a Compiler Target Language for Native Code Generation in Persistent Systems

  • S. J. Bushell
  • A. Dearle
  • A. L. Brown
  • F. A. Vaughan
Part of the Workshops in Computing book series (WORKSHOPS COMP.)


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.


Garbage Collection Parse Tree Garbage Collector Native Code Persistent Store 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    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.Google Scholar
  2. 2.
    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.Google Scholar
  3. 3.
    Carey, M., DeWitt, D. and McNaughton, J. “The 007 Benchmark”, SIGMOD, vol 5, 3, 1993.Google Scholar
  4. 4.
    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.Google Scholar
  5. 5.
    Cutts, Q. “Deviering the Benefits of Persistence to System Construction and Execution”, Ph.D. thesis, Computational Science, St Andrews, 1994.Google Scholar
  6. 6.
    Dearie, A. “Constructing Compilers in a Persistent Environment”, Universities of Glasgow and St Andrews, Technical Report PPRR-51-87, 1987.Google Scholar
  7. 7.
    Dearie, A. and Brown, A. L. “Safe Browsing in a Strongly Typed Persistent Environment”, The Computer Journal, vol 31, 6, pp. 540–545, 1988.CrossRefGoogle Scholar
  8. 8.
    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.Google Scholar
  9. 9.
    Kernighan, B. W. and Ritchie, D. M. “The C programming language”, Prentice-Hall, 1978.Google Scholar
  10. 10.
    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.Google Scholar
  11. 11.
    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.Google Scholar
  12. 12.
    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.CrossRefGoogle Scholar
  13. 13.
    Peyton-Jones, S. “The implementation of functional languages”, Prentice-Hall 1987.Google Scholar
  14. 14.
    R. Stallman, R. “Using and Porting GNU CC”, Free Software Foundation, Technical Report 1991.Google Scholar
  15. 15.
    Sites, R. L. “Alpha Architecture Reference Manual”, Digital Press, 1992.Google Scholar
  16. 16.
    Stallman, R. 1993.Google Scholar
  17. 17.
    Sun Microsystems Inc. “The SPARC Architecture Manual, Version 7”, 1987.Google Scholar
  18. 18.
    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.Google Scholar
  19. 19.
    Weicker, R. P. “Dhrystone: A Synthetic Systems Programming Benchmark.”, vol 27, 10, Communications of the ACM, pp. 1013–1030, 1984.CrossRefGoogle Scholar

Copyright information

© British Computer Society 1995

Authors and Affiliations

  • S. J. Bushell
    • 1
  • A. Dearle
    • 1
  • A. L. Brown
    • 1
  • F. A. Vaughan
    • 1
  1. 1.Department of Computer ScienceUniversity of AdelaideAustralia

Personalised recommendations