A multiprocess design for an integrated programming environment

Duangkaew Sawamiphakdi · 1984

An integrated programming support environment provides a set of program development tools, such as an editor, compiler, runtime system and debugger, with a single user interface. We describe a compiler for such a system which provides very fine grain incremental compilation in response to editing changes in the source text. In case of a program modification, recompilation occurs only for the enclosing statement or an enclosing expression. Input to the compiler is generated by a structure editor. The compiler produces (address independent) symbolic object code as output, in addition to managing an interactive user display. The incremental compiler is designed with its two major components, the editor and the code generator, as concurrent processes which execute on separate processors (and thus overlap execution with each other). The consistency and efficiency of the design centers around concurrent access to the abstract syntax tree and the program symbol table, and message passing between the two processes. The design allows the highly concurrent execution of the two processes, without requiring locking of the shared objects. The system design is verified, in the sense that all shared objects and the code produced from the objects are shown to reach a consistent state prior to the execution of the code. The expected performance of the concurrent system is compared with that of other incremental compilers in terms of the time it takes to respond to a program edit and the time it takes to prepare a program for execution. The concurrent design is shown to be reasonable, in the sense that it gives relatively low response time and close to minimal preparation time. Other comments on the efficiency of various aspects of the concurrent design are also included.

Read the paper · More papers on PaperTik