Ignore:
Timestamp:
May 23, 2013, 3:22:59 PM (7 years ago)
Author:
gb
Message:

Start new scheme: maintain a second bitmap with 1 bit for every 256
in the global ephemeral refmap. (According too my calculations, this
should be ... 256X smaller than the refmap and should be easier to
traverse on machines with relatively small caches.

So far, we just allocate it (at overestimated maximum size) and map
it all read/write. Maintain this in the write barrier on x86 (so far)
and in pc_luser_xp's emulation of the write barrier

Todo: map at correct size and associate with managed_static
and tenured areas, and actually traverse this.

Last commit added a kernel global to support this.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/lisp-kernel/arm-exceptions.c

    r15815 r15816  
    16781678          ((LispObj)ea < val)) {
    16791679        atomic_set_bit(refbits, bitnumber);
     1680        atomic_set_but(global_refidx, bitnumber>>8);
    16801681        if (need_memoize_root) {
    16811682          bitnumber = area_dnode(root, lisp_global(REF_BASE));
    16821683          atomic_set_bit(refbits, bitnumber);
     1684          atomic_set_bit(global_refidx,bitnumber>>8);
    16831685        }
    16841686      }
Note: See TracChangeset for help on using the changeset viewer.