Related articles |
---|
[27 earlier articles] |
Re: Pros and cons of high-level intermediate languages optima!kwalker@cs.arizona.edu (1992-08-04) |
Re: Pros and cons of high-level intermediate languages chased@rbbb.Eng.Sun.COM (1992-08-04) |
Re: Pros and cons of high-level intermediate languages nfsun!gchamber@uunet.UU.NET (1992-08-04) |
Re: Pros and cons of high-level intermediate languages moss@cs.umass.edu (1992-08-05) |
Re: Pros and cons of high-level intermediate languages chased@rbbb.Eng.Sun.COM (1992-08-07) |
Re: Pros and cons of high-level intermediate languages maniattb@cs.rpi.edu (1992-08-07) |
Re: Pros and cons of high-level intermediate languages diamond@jit.dec.com (1992-08-10) |
Re: Garbage collectable C chased@rbbb.Eng.Sun.COM (1992-08-10) |
Newsgroups: | comp.compilers |
From: | diamond@jit.dec.com (Norman Diamond) |
Organization: | Compilers Central |
Date: | Mon, 10 Aug 1992 15:43:48 GMT |
nfsun!gchamber@uunet.UU.NET (Glenn Chambers) writes:
>[one could force references to GC-able pointers with]
> extern volatile void * __gc_sink;
> #define _GC_USE(x) __gc_sink = (void *) (x)
>[and in an assembler post-pass remove the dead code thereby generated]
>The way that we (Hans Boehm and I) see this going wrong is if "x" is
>reconstituted (say, from other induction variables) at the _GC_USE.
I think the following code might be safer plus avoid some of the register
pressure. A post-pass over the assembly language is still needed to
remove the unnecessary fetches (or other implementation-defined access to
volatiles). Of course, if the translator to C declares register x, then
this doesn't work.
#define _GC_USE(x) *(volatile void *)&x;
--
Norman Diamond diamond@jit081.enet.dec.com
--
Return to the
comp.compilers page.
Search the
comp.compilers archives again.