* For all precise gencgc backends, with-pinned-objects uses an
explicit "pin list". This pin list should be stack-allocated.
* Declare the pin list to be TRULY-DYNAMIC-EXTENT, for both
backends. This won't actually do anything unless the backend
also supports :stack-allocatable-fixed-objects or more than two
objects are to be pinned at once (one-arg LIST and two-arg LIST*
are both converted to CONS by the compiler, and CONS falls under
:stack-allocatable-fixed-objects rather than
:stack-allocatable-lists).
,@body)
#!+gencgc
`(let ((*pinned-objects* (list* ,@objects *pinned-objects*)))
+ (declare (truly-dynamic-extent *pinned-objects*))
,@body))
,@body)
#!+gencgc
`(let ((*pinned-objects* (list* ,@objects *pinned-objects*)))
+ (declare (truly-dynamic-extent *pinned-objects*))
,@body))