porting self

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
 > multiprocessor?).
 > 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 mailing list