1.0.23.10: allocate code objects using allocation CODE_PAGE_FLAG
commit6cbed049e2373d34fde8c96a3ce7b32b7034a7f2
authorNikodemus Siivola <nikodemus@random-state.net>
Mon, 1 Dec 2008 20:08:52 +0000 (1 20:08 +0000)
committerNikodemus Siivola <nikodemus@random-state.net>
Mon, 1 Dec 2008 20:08:52 +0000 (1 20:08 +0000)
treee7edbf6812c266ba6f30404461a48154f80df2cf
parentfee931bde89778322557461356580752bc819cbf
1.0.23.10: allocate code objects using allocation CODE_PAGE_FLAG

 (Code and data separation 5.)

 * CODE_PAGE_FLAG == BOXED_PAGE_FLAG|UNBOXED_PAGE_FLAG, which may or
   may not be better then having a separate bit for it -- but seemed
   easier to implement and doesn't seem too horrible.

 * Define page predicates instead of manually open coding things all
   over the place. Also a convenient way to make sure we catch all the
   places where == needs to be changed to & when checking for boxed
   pages, etc.

 * trans_code_header keeps code objects on code pages.

 * Take separated code pages into account when pinning: since
   code-objects live on their own pages, we get most of the accuracy
   benefit of the scanning by just checking for code_page_p.

   Similarly, there is no need to do a full scan unless
   is_lisp_pointer is true.
src/runtime/alloc.c
src/runtime/gc-common.c
src/runtime/gc-internal.h
src/runtime/gencgc-internal.h
src/runtime/gencgc.c
version.lisp-expr