Remove some spaghetti code from gencgc initialization
commit4cd99d7b657691c22e10d14a07503bef57012d37
authorDouglas Katzman <dougk@google.com>
Tue, 12 Dec 2017 16:59:23 +0000 (12 11:59 -0500)
committerDouglas Katzman <dougk@google.com>
Tue, 12 Dec 2017 17:11:30 +0000 (12 12:11 -0500)
treeabc9920b53c4d9376e1b552558e30d1caef9ebf9
parenta6bba93b3cf18ee73ed6edadcc73aac7ca22cc3f
Remove some spaghetti code from gencgc initialization

gencgc has to special-case not having a page table, but it did so in a way
that completely altered the control flow. It makes things much more obvious
and consistent to write out out an empty page table from genesis.
(Better still would be to write correct bytes_used values, etc)

This way, the assignments to page_table[] are confined to a single function
which can see whether it has actual values, or should use defaults.
Consequently gc_initialize_pointers() is gone - we don't need a post-check
of whether coreparse performed a required initialization step.
And finally, we can assert that there were exactly the right number
(if nonzero) of page table entries provided in the core file.
src/compiler/generic/genesis.lisp
src/runtime/cheneygc.c
src/runtime/gc.h
src/runtime/gencgc.c
src/runtime/runtime.c