Dirk Steinberg H tenhagen
steinber at sun7.ert.rwth-aachen.de
Wed Aug 19 15:53:09 UTC 1992
Eliot Moss writes:
> >>>>> On Tue, 18 Aug 92 13:52:53 PDT, Urs.Hoelzle at Eng.Sun.COM said:
> Urs.Hoelzle> How about using the gcc backend?
> Urs.Hoelzle> We have considered that, but it's not as easy as it seems. One
> Urs.Hoelzle> problem is that gcc's backend needs to be taught about garbage
> Urs.Hoelzle> collection. Some people at UMass (Eliot Mass' group) are doing
> Urs.Hoelzle> this for Modula-3, but as far as I know it's not working yet (and
> Urs.Hoelzle> they have put a lot of effort in it). The other problem is that
> Urs.Hoelzle> gcc might be too slow - in Self, compilation happens at run-time,
> Urs.Hoelzle> so you'd like to keep compile pauses in the millisecond area, and
> Urs.Hoelzle> I'm not sure if gcc as a traditional batch compiler is up to
> Urs.Hoelzle> that.
> Actually, it *is* working (gc support in GNU Modula-3, using gcc's back end).
> We would be thrilled if some other people tried to use this technology, though
> I would say we're probably not so far along that we're ready to release code
> to just anybody (still needs some cleanup I think). We would also be pleased
> to help someone (say a graduate student at Stanford) get our gc toolkit
> (implemented) and mature object space collector (not yet implemented) going
> with Self.
> As for the speed issue, perhaps if you kept a gcc fork around, designed to
> receive methods for compilation on standard input and to deliver the compiled
> code to standard output you could get reasonable response. Probably not as
> fast as what you have now, but perhaps good enough (especially on a
> Regards -- Eliot
> J. Eliot B. Moss, Associate Professor
> Department of Computer Science
> Lederle Graduate Research Center
> University of Massachusetts
> Amherst, MA 01003
> (413) 545-4206, 545-1249 (fax); Moss at cs.umass.edu
I think you could *link* the gcc backend (the part that deals with the RTL
parse tree and finally generates code) into the VM, eliminating any overhead for
fork()ing. I think that gcc was developed with that in mind, that you can provide
your own frontend and then use the common optimizer and code generator. This has been
done for G++, and GNU Pascal and GNU Fortran are under development.
More information about the Self-interest