Re: Incremental Compilers/Linkers (Eliot Miranda;W211)
Wed, 24 Mar 1993 11:20:52 GMT

          From comp.compilers

Related articles
Incremental Compilers/Linkers (1993-03-19)
Re: Incremental Compilers/Linkers (1993-03-22)
Re: Incremental Compilers/Linkers (1993-03-23)
Re: Incremental Compilers/Linkers (1993-03-25)
Re: Incremental Compilers/Linkers (1993-03-24)
| List of all articles for this month |

Newsgroups: comp.compilers
From: (Eliot Miranda;W211)
Keywords: linker, OOP
Organization: Computer Science Dept, QMW, University of London
References: 93-03-071 93-03-083
Date: Wed, 24 Mar 1993 11:20:52 GMT (Thomas M. Breuel) writes:
>In my opinion, more interesting than the rather commonplace incremental
>compilation is generating object code at runtime. This gives the compiler
>the opportunity to gather runtime statistics and generate optimized code
>accordingly. All systems that take advantage of runtime statistics that I
>know of require a two-stage process consisting of the manual gathering of
>profiling information followed by an optimizing compilation. Integrating
>these two steps at runtime would yield a system that only compiles what
>needs to be compiled and even adapts to changing patterns in the input
>data. The only commonly used, related technique that I know of is
>Smalltalk's backpatching. Is there any recent work that I don't know of?

Self uses many more techniques, and does collect stats at run-time to
guide its dynamic compilation decisions. The Keppel, Eggers & Henry paper
'A Case for Run-Time Code Generation' (ftpable from Washington) describes
a number of systems that do dynamic compilation for things such as RPC
stubs and x86 simulators on RISC architectures. And of course there's
dynamically compiled BitBLT, first done (I believe) by Rob Pike for the
Blit terminal.

There's a recent paper in IEEE COMPUTER over-views the Self techniques and
contains other useful references. I've mislaid my copy for the moment, but
the title is something like "How Message And Performance Can Coexist in
Object-Oriented Systems".

One way of thinking about run-time code generation for optimization is as
a form of strength-reduction. For example, in any one invocation of a
bitblt routine the routine's parameters are constant and expressions of
those parameters are used many times in nested loops. Compiling each
invocation separately allows those 'constant' expressions to be computed
outside the loops and their values substituted.
Eliot Miranda, Lecturer email:
Department of Computer Science ARPA:
Queen Mary Westfield College UUCP: eliot@qmw-dcs.uucp
Mile End Road, LONDON E1 4NS Tel: 071 975 5229 (+44 71 975 5229)

Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.