Don't define MAKE-MUTEX in two different ways.
commit9ca5f29b16d0af3a885fc4a38427d3c893e22e40
authorDouglas Katzman <dougk@google.com>
Sun, 20 Sep 2015 23:52:57 +0000 (20 19:52 -0400)
committerDouglas Katzman <dougk@google.com>
Sun, 20 Sep 2015 23:52:57 +0000 (20 19:52 -0400)
tree48989c93d7d4702cab658d8b5dc0a73a776c5b59
parentb93039668f704d0909bcac8cfd79ff5f6c4581ed
Don't define MAKE-MUTEX in two different ways.

MAKE-MUTEX began as a stub defined in 'cross-thread', then got redefined
as a structure constructor. Its use in the host is to proclaim the type
of **WORLD-LOCK** and maybe other things, but it's not really needed
because WITH-MUTEX is basically PROGN for the host.

While it should be possible to use a mock object for MUTEX, it is equally ok
to define MUTEX as just an ordinary struct. THREAD is moved only to satisfy
the type-check from MUTEX, though the host does not make instances of either.
This highlights a confusing aspect of DEF!STRUCT - there is no way to declare
that instances are only to be created in the target and that the host's type
exists only to resolve a reference from another host type.
src/code/cross-thread.lisp
src/code/early-thread.lisp
src/code/thread.lisp