[gclist] Experience with Boehm-Demers-Weiser on Alpha in 32 bit mode?

Fergus Henderson fjh@cs.mu.OZ.AU
Fri, 9 Oct 1998 15:55:51 +1000

On 08-Oct-1998, Allyn Dimock <dimock@deas.harvard.edu> wrote:
> I assumed that the latest (non-alpha-point) release of
> Boehm-Demers-Weiser ( gc4.12.tar.gz 07-Aug-98 17:23 ) would work out
> of the box, but this isn't the case: after making what seemed the
> reasonable tweaks for word size 32 and 4 byte alignment to the
> parameters for compiling gc4 on the Alpha, we ended up with a garbage
> collector that crashed during initialization.  (64 bit mode tested out
> fine but can't be used with our code generator).
> Our pointers use the low 2 bits for tag info, but that shouldn't be an
> issue.

Well, it is an issue, just one that is easily resolved: you need to
either compile with ALL_INTERIOR_POINTERS enabled, or do the
appropriate calls to GC_register_displacement() at startup:

        /* The following code is necessary to tell the conservative */
        /* garbage collector that we are using tagged pointers */
                int i;

                for (i = 1; i < (1 << TAGBITS); i++) {

In my experience, the usual source of difficulties with porting the
Boehm collector is ensuring that the root set is accurate.  But
"crashed during initialization" isn't really enough information to
diagnose the problem.

Fergus Henderson <fjh@cs.mu.oz.au>  |  "I have always known that the pursuit
WWW: <http://www.cs.mu.oz.au/~fjh>  |  of excellence is a lethal habit"
PGP: finger fjh@        |     -- the last words of T. S. Garp.