[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.


Instituto de Física Fundamental, CSIC
c/ Serrano, 113b, Madrid 28006 (Spain)
-------------- 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