[Ecls-list] Special symbols that might benefit from implicit locking or thread-local bindings

Juan Jose Garcia-Ripoll juanjose.garciaripoll at googlemail.com
Mon Aug 1 18:50:29 UTC 2011


On Mon, Aug 1, 2011 at 8:39 PM, Matthew Mondor <mm_lists at pulsar-zone.net>wrote:

> contrib/defsystem/defsystem.lisp:4019:            (setf *package*
> package)))))
> contrib/defsystem/defsystem.lisp:4100:      (setf *package* (find-package
> old-package)))
>

External package. Probably wrong: they should have established a binding for
*package* outside.


> src/bare.lsp.in:34:(setq *package* (find-package "SYSTEM"))
> src/compile.lsp.in:13:  (setq *package* (find-package "SYSTEM"))
>

Only used when building ECL. No problem.


> src/c/cinit.d:144:      ECL_SET(@'*package*', cl_core.system_package);
>

Boot time.


> src/c/main.d:699:       ECL_SET(@'*package*', cl_core.lisp_package);
> src/c/main.d:708:       ECL_SET(@'*package*', cl_core.user_package);
>

Again initialization. Safe uses


>  src/c/package.d:339:            ECL_SETQ(env, @'*package*',
> cl_core.user_package);
>

This only happens when *package* had a bogus value.


>  src/c/package.d:841:    @(return (ECL_SETQ(the_env, @'*package*', p)))
>

These is the routine that actually implement IN-PACKAGE (saves some bytes).


> src/lsp/defpackage.lsp:202:      (setf (documentation *package* t)
> documentation))
>

Nothing related to the *package* variable itself.

So it seems we are pretty safe.

Juanjo

-- 
Instituto de Física Fundamental, CSIC
c/ Serrano, 113b, Madrid 28006 (Spain)
http://juanjose.garciaripoll.googlepages.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/ecl-devel/attachments/20110801/5e438281/attachment.html>


More information about the ecl-devel mailing list