Update of /cvsroot/sbcl/sbcl/src/compiler/generic
In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv6409/src/compiler/generic
184.108.40.206: --control-stack-size runtime argument
* THREAD_CONTROL_STACK_SIZE becomes DEFAULT_CONTROL_STACK_SIZE.
* Align thread spaces using the larger of BACKEND_PAGE_SIZE and
* Take care of aligning both ends of the control stack when setting
up the thread struct -- that way pthread_attr_setstack doesn't have
to worry about alignment.
* Simplify stack setup in on x86oid platforms in
call_into_lisp_first_time: instead of having the nasty window where
ESP/RSP is right at the end of the stack, use pull out the control
stack end right out of the thread struct.
* Minimal documentation.
Not strictly related to --control-stack-size:
* Refactor thread post mortem cleanups to share as much code as
possible and reduce conditionalization. The core functions in the
new world are plan_thread_post_mortem, schedule_thread_post_mortem,
* Malloc thread attributes, and destroy them before freeing thread
stacks. (pthread_attr_setstack seems to say that we are not allowed
to free stacks that have attributes referring to them -- hopefully
pthread_attr_destroy gives us the licence we need, and since it is
not entirely clear we are allowed to destroy the attr before the
thread has finished, do it only after pthread_join.)
RCS file: /cvsroot/sbcl/sbcl/src/compiler/generic/objdef.lisp,v
retrieving revision 1.56
retrieving revision 1.57
diff -u -d -r1.56 -r1.57
--- objdef.lisp 26 Sep 2007 15:44:23 -0000 1.56
+++ objdef.lisp 15 May 2008 15:37:50 -0000 1.57
@@ -381,6 +381,7 @@
;; Kept here so that when the thread dies we can releast the whole
;; memory we reserved.
(os-address :c-type "void *" :length #!+alpha 2 #!-alpha 1)
+ (os-attr :c-type "pthread_attr_t *" :length #!+alpha 2 #!-alpha 1)
(binding-stack-start :c-type "lispobj *" :length #!+alpha 2 #!-alpha 1)
(binding-stack-pointer :c-type "lispobj *" :length #!+alpha 2 #!-alpha 1)
(control-stack-start :c-type "lispobj *" :length #!+alpha 2 #!-alpha 1)