Changes between Version 2 and Version 3 of Commentary/HeapAlloced


Ignore:
Timestamp:
Jan 30, 2009 11:10:33 AM (7 years ago)
Author:
simonmar
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Commentary/HeapAlloced

    v2 v3  
    1717We should consider how to speed up `HEAP_ALLOCED()` for large heaps on 64-bit machines.  This involves some kind of cache arrangement - the memory map is like a page table, and we want a cache that gives us quick access to commonly accessed parts of that map.
    1818
    19 The attached patch implements one such scheme.  Measurements show that it slows down GC by about 20% for small heaps (hence it wasn't committed), though it would probably speed up GC on large heaps.
     19[attachment:faster-heap-alloced.patch.gz] implements one such scheme.  Measurements show that it slows down GC by about 20% for small heaps (hence it wasn't committed), though it would probably speed up GC on large heaps.
    2020
    2121== Eliminating `HEAP_ALLOCED` completely ==
     
    2727ELF sections can be arbitrarily aligned.  So we could put all our static closures in a special section, align the section to 1MB, and arrange that there is space at the beginning of the section for the block descriptors.
    2828
    29 This almost works (see attached patch), but sadly fails for shared libraries: the system dynamic linker doesn't honour section-alignment requests larger than a page, it seems.
     29This almost works (see [attachment:eliminate-heap-alloced.patch.gz]), but sadly fails for shared libraries: the system dynamic linker doesn't honour section-alignment requests larger than a page, it seems.
    3030
    3131=== Method 2: copy static closures into a special area at startup ===