Raymond Toy pushed to branch rtoy-mmap-anon-control-and-binding-stacks at cmucl / cmucl
Commits: a6339d00 by Raymond Toy at 2016-05-10T21:33:43-07:00 Remove #if 0 code.
- - - - - 67f59a2d by Raymond Toy at 2016-05-10T21:33:57-07:00 Add some comments.
- - - - - 38fdea64 by Raymond Toy at 2016-05-10T21:34:14-07:00 Fix indentation, add some comments.
- - - - -
3 changed files:
- src/lisp/save.c - src/lisp/solaris-os.c - src/lisp/validate.c
Changes:
===================================== src/lisp/save.c ===================================== --- a/src/lisp/save.c +++ b/src/lisp/save.c @@ -136,11 +136,9 @@ save(char *filename, lispobj init_function, int sse2_mode) } printf("[Undoing binding stack... "); fflush(stdout); -#if 0 - unbind_to_here((lispobj *) BINDING_STACK_START); -#else + unbind_to_here((lispobj *) binding_stack); -#endif + SetSymbolValue(CURRENT_CATCH_BLOCK, 0); SetSymbolValue(CURRENT_UNWIND_PROTECT_BLOCK, 0); SetSymbolValue(EVAL_STACK_TOP, 0); @@ -282,11 +280,9 @@ save_executable(char *filename, lispobj init_function)
printf("[Undoing binding stack... "); fflush(stdout); -#if 0 - unbind_to_here((lispobj *)BINDING_STACK_START); -#else + unbind_to_here((lispobj *)binding_stack); -#endif + SetSymbolValue(CURRENT_CATCH_BLOCK, 0); SetSymbolValue(CURRENT_UNWIND_PROTECT_BLOCK, 0); SetSymbolValue(EVAL_STACK_TOP, 0);
===================================== src/lisp/solaris-os.c ===================================== --- a/src/lisp/solaris-os.c +++ b/src/lisp/solaris-os.c @@ -409,7 +409,9 @@ os_vm_address_t round_up_sparse_size(os_vm_address_t addr) /* * An array of the start of the spaces which should have holes placed * after them. Must not include the dynamic spaces because the size - * of the dynamic space can be controlled from the command line. + * of the dynamic space can be controlled from the command line. Also + * must not include the binding and control stacks. They're handled + * below. */ static os_vm_address_t spaces[] = { READ_ONLY_SPACE_START, STATIC_SPACE_START
===================================== src/lisp/validate.c ===================================== --- a/src/lisp/validate.c +++ b/src/lisp/validate.c @@ -124,7 +124,7 @@ validate_stacks() ensure_space(control_stack, control_stack_size); #else /* Map the conrol stack wherever we have space */ - control_stack = (lispobj*) os_validate(NULL, control_stack_size); + control_stack = (lispobj*) os_validate(NULL, control_stack_size);
#if (defined(i386) || defined(__x86_64)) control_stack_end = (void*)control_stack + control_stack_size; @@ -136,6 +136,7 @@ validate_stacks() binding_stack = (lispobj *) BINDING_STACK_START; ensure_space(binding_stack, binding_stack_size); #else + /* Map the binding stack wherever we have space */ binding_stack = (lispobj*) os_validate(NULL, binding_stack_size); #endif #ifdef sparc
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/compare/75d4ea457191cd39b6da88bec...