# Copyright (c) 1993 Xerox Corporation.  All rights reserved.
#
# pcrnotes.txt
#
# Demers, August 3, 1993

Here is what I had to do to bring up Version 3.2 on ppcr.

-1: Note that "make depend" doesn't work with the Solaris/SunPro C compiler,
both because of their -xM flag and because of their stupid non-Ansi CPP.
I changed it to use gcc; this gets a slightly wrong set of includes,
but they're wrong only for the system files that gnu replaces, and those
aren't changing anyway ...

0. Changed Makefile to default to make pcr.
1. Changed PCR-Makefile to make only gc.o by default.

2. Changed PCRDIR in PCR-Makefile; removed /pcr/ from pcr include paths there.

3. Fixed pcr include file names:

    vd/PCR←VD.h in os←dep.c
    
    th/PCR←Th.h in gc←private.h
    th/PCR←ThCrSec.h in gc←private.h
    th/PCR←ThCtl.h in gc←private.h
    
    il/PCR←IL.h in mark←roots.c
    mm/PCR←MM.h in mark←roots.c
    th/PCR←ThCtl.h in mark←roots.c
    
    il/PCR←IL.h in misc.c

    mm/PCR←MM.h in pcr←interface.c

4. Note the README file suggests configuration info is at
"the beginning of gc.h" rather than in config.h.

5. Added DCL←LOCK←STATE; to misc.c:GC←enable←incremental,
stubborn.c:GC←change←stubborn and stubborn.c:GC←end←stubborn←change.

6. Fixed syntax error in GC←read←dirty in os←dep.c.

7. Added cast to PCR←Any for "all" argument to GC←old←allocator->mmp←enumerate
in mark←roots.c:GC←push←roots.

8. In stubborn.c:GC←end←stubborn←change should my←current have a volatile
declaration?

    I added several "volatile"s per your mail message.



9. The call to PCR←VD←Clear in os←dep.c was passing the number of pages
rather than the number of bytes; the corrected line (807) is

    if (PCR←VD←Clear(GC←vd←base, NPAGES*HBLKSIZE, GC←grungy←bits)
        != PCR←ERes←okay) {


10. GC←read←dirty() was changed to enable write protection on newly-added
heap sects.  The added code (os←dep.c:795) is

    /* lazily enable dirty bits on newly added heap sects */
    {
        static int onhs = 0;
        int nhs = GC←n←heap←sects;
        for( ; onhs < nhs; onhs++ ) {
            PCR←VD←WriteProtectEnable(
                    GC←heap←sects[onhs].hs←start,
                    GC←heap←sects[onhs].hs←bytes );
        }
    }

11. I had to change ppcr to WriteProtectDisable stacks and thread descriptors
explicitly.  This doesn`t seem to have been a big deal.