| Allegro CL version 10.1 Moderately revised from 10.0. 10.0 version |
As with most compiler switch variables, the value of this variable
can be t
, nil
, or a
function object that accepts five arguments and returns t
or nil
. The arguments
passed to the function will be the values of the safety, space, speed,
debug, and compilation-speed optimization qualities, in that order. nil
is equivalent to a function that always returns
nil
and t
to a
function that always returns t
. When the
value is a function and we say t
(or true) or
nil
(or false) in the text below, we mean
that the function returns, respectively, t
or
nil
.
If true, and if the compiler trusts declarations (that is
trust-declarations-switch
is true), the
compiler will trust dynamic-extent declarations in code and produce
code (when it can) that is optimized given the declarations. One
optimization that is possible when objects are declared dynamic-extent
(and the declaration is trusted) is stack allocation (where the object
is stored on the stack and not in memory,
see Stack consing,
avoiding consing using apply, and stack allocation
in compiling.htm).
Having a
switch which controls dynamic-extent declarations when declarations
are trusted (via the general trust-declarations-switch
) allows
dynamic-extent declarations to be ignored while other declarations are
trusted. When using multiprocessing, trusting
dynamic-extent
declarations may be unsafe when
trusting other declarations is
safe. See Stack
consing, avoiding consing using apply, and stack allocation
in compiling.htm for a discussion of the issues
surrounding multiprocessing and dynamic extent.
If trust-declarations-switch
is nil
, this switch is ignored.
Initially true when speed is greater than or equal to safety, which
means that this switch will be true in the default when
the trust-declarations-switch
is true in the
default (which is when speed is greater than safety). If there is an
issue with multiprocessing, you should bind or set this switch
to nil
, or design your own
function.
See compiling.htm for information on the compiler.
Copyright (c) 1998-2022, Franz Inc. Lafayette, CA., USA. All rights reserved.
This page has had moderate revisions compared to the 10.0 page.
Created 2019.8.20.
| Allegro CL version 10.1 Moderately revised from 10.0. 10.0 version |