Matt Birkholz [Thu, 26 Nov 2015 05:38:20 +0000 (22:38 -0700)]
doc/user-manual: Unix Installation: minor edits.
Fix gdbm plugin instructions; there is no configure script in src/gdbm/.
Matt Birkholz [Thu, 26 Nov 2015 05:37:00 +0000 (22:37 -0700)]
svm: finish-cross-compilation of everything using a large heap.
Matt Birkholz [Thu, 26 Nov 2015 05:33:35 +0000 (22:33 -0700)]
Update versions to 9.2.1.
Matt Birkholz [Thu, 26 Nov 2015 05:19:22 +0000 (22:19 -0700)]
Update copyright years.
$ mit-scheme --load dist/update-copyright \
_ --eval '(begin (translate-standard-dirs "./" translate-copyright) (%exit))'
Matt Birkholz [Thu, 26 Nov 2015 05:17:37 +0000 (22:17 -0700)]
dist/update-copyright.scm: Translate last-copyright-year.
Matt Birkholz [Thu, 26 Nov 2015 05:17:15 +0000 (22:17 -0700)]
dist/update-copyright.scm: Update files in place.
Rather than store the changed files in a dirtree rooted at
translated-files/. Start with a clean working tree and you can `git
reset --hard HEAD' when the translation goes badly.
Taylor R Campbell [Tue, 27 Oct 2015 13:51:59 +0000 (13:51 +0000)]
Document REFERENCE-BARRIER.
Matt Birkholz [Thu, 3 Sep 2015 20:17:46 +0000 (13:17 -0700)]
ffi: Fix callouts that return a struct or union.
I missed a hunk while porting Peter Feigl <craven@gmx.net>'s patch to
commit
cf1e855.
Matt Birkholz [Wed, 19 Aug 2015 01:00:50 +0000 (18:00 -0700)]
Use without-interruption and more locking(!) in gcfinal.scm.
Prepare the GC daemon to run concurrently with other threads; lock each
finalizer while it is cleaned in run-gc-finalizers.
Add without-interruption to add-to-, remove-from-, remove-all-from-,
with--lock, and make-gc-finalized-object, NOT to search- or -elements.
Reset-gc-finalizers also lost its without-interrupts, but it is an
after-restore event already executed without-interrupts.
Matt Birkholz [Tue, 23 Jun 2015 18:01:26 +0000 (11:01 -0700)]
Remove without-interrupts from runtime/process.scm.
Serial access to a subprocess is the responsibility of the user. Thus
subprocess-i/o-port and close-subprocess-i/o do not need without-
interrupts to implement it.
Closing a port twice should not signal an error, so subprocess-delete
and close-subprocess-i/o do not need even without-interruption.
However they should close the port before clearing the subprocess
slot, else an abort could drop the port and it's channels may not be
closed for an arbitrarily long time.
Status sync could miss changes and subprocess-i/o-port and
make-subprocess could drop a subprocess or port if aborted mid-stride.
They now use without-interruption.
Matt Birkholz [Fri, 10 Jul 2015 19:03:02 +0000 (12:03 -0700)]
Remove without-interrupts from runtime/os2graph.scm.
Matt Birkholz [Fri, 19 Jun 2015 20:22:48 +0000 (13:22 -0700)]
Remove without-interrupts from runtime/x11graph.scm.
Replaced it with without-interruption. Presumably the desire was to
keep the permanently registered IO thread event from interrupting
itself.
Matt Birkholz [Fri, 19 Jun 2015 17:51:15 +0000 (10:51 -0700)]
Remove without-interrupts from runtime/random.scm.
Use a mutex to serialize access to the default random state. Serial
access to other random states is still the responsibility of the user.
Matt Birkholz [Fri, 19 Jun 2015 20:04:04 +0000 (13:04 -0700)]
Remove without-interrupts from runtime/queue.scm.
Add make-serial-queue and use it in runtime globals: the event
distributors, GC daemons and REPLs. Note that the "safe" queue
operations, when applied to non-serializing queues in SMPing worlds,
are NOT thread-safe. This only happens in LIAR, SWAT, Edwin, X11
Graphics and OS2 Graphics -- single-threaded applications.
Matt Birkholz [Wed, 1 Jul 2015 14:34:59 +0000 (07:34 -0700)]
Serialize access to the population-of-1d-tables.
Allow create-thread to be run by multiple threads concurrently while
still accessing the population-of-1d-tables serially.
Matt Birkholz [Sun, 12 Jul 2015 23:47:14 +0000 (16:47 -0700)]
Remove without-interrupts from runtime/intrpt.scm.
It was only used in the internal install procedure where an "atomic"
updated was described. Punted that and assumed the procedure is not
run in multiple threads concurrently. It should be called only during
the single-threaded cold load or in a careful developer's REPL(?).
Matt Birkholz [Mon, 13 Jul 2015 22:57:03 +0000 (15:57 -0700)]
Remove without-interrupts from runtime/io.scm.
Channel-read and channel-write used without-interrupts for atomicity,
to avoid calling primitives with a channel another thread has closed.
The resulting errors may have been expensive to handle, but the cheap
technique of calling without-interrupts is ineffective in SMPing
worlds. Assuming most channels are used by one thread and will not
encounter these errors, just punt the calls to without-interrupts.
Serialize modifications to the channel table (esp. channel-close) via
the open-channels gc finalizer's atomic section and the new
with-gc-finalizer-lock procedure.
Remove tty-input-channel and tty-output-channel from general use.
They are only used in a cold load initialize-package! procedure and an
after-restore reset-console procedure. They are not fit for general
use, creating a new channel object each time they are called, only the
newest one of which is returned by descriptor->channel. Assume these
procedures are only used in single threaded fashion.
In open-pty-master, directory-channel-open and make-select-registry,
replace without-interrupts with without-interruption to avoid dropping
a channel or registry because of an inopportune abort. GC finalizers
like open-channels and open-directories (and select-registry-
finalizer) are already serializing.
Do NOT export channel-descriptor-for-select to the () package. Assume
select registries and their result vectors are used ONLY internally,
in single threaded fashion, by the thread system. Punt the
unnecessary and now useless calls to without-interrupts.
In dld-load-file and dld-unload-file, serialize access to the
dld-handles via dld-handles-mutex.
Matt Birkholz [Tue, 23 Jun 2015 23:01:51 +0000 (16:01 -0700)]
Remove without-interrupts from runtime/infutl.scm.
Without-interrupts was used to make atomic accesses to the
uncompressed-files cache and the wrappers-with-memoized-debugging-info
population. To replace it, a serial population is used and the
uncompressed-files cache is punted. The latter is hopefully
unnecessary on modern machinery.
Matt Birkholz [Thu, 18 Jun 2015 19:23:48 +0000 (12:23 -0700)]
Remove without-interrupts from runtime/hashtb.scm.
Serial access to particular hash tables is (now?) the responsibility
of the user -- all access, not just modifications (because of lazy
rehashing). Serial access to the list of all address hash tables is
now the responsiblity of a serial population.
Most calls to with-table-locked! (aka without-interrupts) are now
calls to without-interruption (to postpone inopportune aborts).
Matt Birkholz [Thu, 18 Jun 2015 19:56:42 +0000 (12:56 -0700)]
Remove with-absolutely-no-interrupts from runtime/hash.scm.
Use a thread mutex to serialize access. Simplify an ancient
implementation by using the new datum weak and key weak hash table
types. Initialize the package AFTER (runtime hash-table).
Matt Birkholz [Mon, 13 Jul 2015 00:23:52 +0000 (17:23 -0700)]
Remove without-interrupts from runtime/global.scm.
Clean-obarray runs as a secondary-gc-deamon and thus, in SMPing
worlds, it may run in parallel with other threads on other processors.
A number of primitives and compiler utilities modify the obarray so an
SMPing microcode will use a pthread mutex to serialize access to it.
Clean-obarray now uses a new procedure, with-obarray-lock, that uses
new primitives to participate in the serialization.
Matt Birkholz [Fri, 19 Jun 2015 17:31:37 +0000 (10:31 -0700)]
Remove without-interrupts from runtime/generic.scm.
Serial access to particular generic functions is still the
responsibility of the user. Serial access to the
generic-procedure-records table is now ensured by a thread mutex.
Matt Birkholz [Thu, 18 Jun 2015 18:24:43 +0000 (11:24 -0700)]
Remove without-interrupts from runtime/geneqht.scm.
Serial access to a particular table is still the responsibility of the
user (e.g. SOS procedures?), but the list of all address hash tables
is now a serial population.
Matt Birkholz [Thu, 18 Jun 2015 18:22:42 +0000 (11:22 -0700)]
Add make-serial-population.
Also add empty-population! and for-each-inhabitant.
Do not export the /unsafe procedures even to (runtime); require that
they be explicitly imported (specifically exported?). Use the /unsafe
procedures in (runtime 1d-property) and (runtime thread) package
initializations to avoid trying to lock the population-of-populations
too early in the cold load.
Matt Birkholz [Mon, 13 Jul 2015 22:54:49 +0000 (15:54 -0700)]
Remove without-interrupts from runtime/gcfinal.scm.
Serialize access to the list of gc finalizers and to each finalizer.
Matt Birkholz [Mon, 6 Jul 2015 00:58:03 +0000 (17:58 -0700)]
Initialize the thread system early in the cold load.
Thus with-thread-mutex-lock can be used during initialization of most
packages. Avoid using the global set-interrupt-enables! binding in
dynamic-wind because it is now called so early.
This anticipates removing without-interrupts from gcfinal.scm and thus
calling with-thread-mutex-lock during make-gc-finalizer, e.g. during
the initialization of the (runtime string) package.
Matt Birkholz [Tue, 23 Jun 2015 18:42:13 +0000 (11:42 -0700)]
Remove with-absolutely-no-interrupts from runtime/gc.scm.
Default/purify and default/gc-flip modified the constant-space-queue
under the cover of with-absolutely-no-interrupts, which is no longer
atomic. Serializing these procedures is a trick because the latter is
invoked by the GC interrupt. (Thus ABSOLUTELY no interrupts were
allowed?)
But there is no need for default/gc-flip to remove items from the
queue. Flush-purification-queue! will know that its queue is "empty"
when its head is in constant space. Thus the interrupt no longer
modifies the queue, and the queuing process is serialized in the usual
way.
Since primitive-purify cannot fail for lack of space, ancient error
signals and retry loops are also eliminated.
Matt Birkholz [Wed, 17 Jun 2015 03:03:56 +0000 (20:03 -0700)]
Define make-thread-mutex early.
Global data structures like event-distributors and gc-daemon queues
need to serialize operations and could use thread mutexes except that
they are naturally created early in the cold load, before the thread
system is loaded. So the mutex data structure is defined (withOUT
define-structure syntax) in a new file: runtime/thread-low.scm. The
rest of thread.scm must be loaded after record.scm.
This breaks the circularity where thread system initialization
requires population and 1d-table operations which are serialized by
the thread system.
Matt Birkholz [Wed, 17 Jun 2015 02:35:31 +0000 (19:35 -0700)]
Remove without-interrupts from runtime/sfile.scm.
Serialize access to the files-to-delete element of the fixed-objects
vector.
Matt Birkholz [Wed, 17 Jun 2015 02:34:03 +0000 (19:34 -0700)]
Remove without-interrupts from runtime/rgxcmp.scm.
Add a mutex to each of the memoization caches.
Matt Birkholz [Tue, 14 Jul 2015 01:35:18 +0000 (18:35 -0700)]
Remove without-interrupts from runtime/ffi.scm.
Modifications to the registered-callbacks vector and the malloced
aliens list are now serialized by mutexes. Call-alien now uses
without-preemption during a callout (and its callbacks).
Matt Birkholz [Fri, 10 Jul 2015 02:30:06 +0000 (19:30 -0700)]
Add without-preemption.
Matt Birkholz [Wed, 17 Jun 2015 02:21:46 +0000 (19:21 -0700)]
Remove without-interrupts from runtime/string.scm.
It was only used to postpone aborts that would drop an external string
descriptor. The interrupt mask manipulation in %string-head! only
postpones a GC flip while the local heap is edited.
Matt Birkholz [Wed, 17 Jun 2015 02:21:19 +0000 (19:21 -0700)]
Remove without-interrupts from runtime/rbtree.scm.
It was only used to postpone aborts that would leave data structures
inconsistent.
Matt Birkholz [Wed, 17 Jun 2015 02:20:31 +0000 (19:20 -0700)]
Unalias with-absolutely-no-interrupts in runtime/prgcop.scm.
It is not atomic in multiprocessing worlds. The alias "atomically" is
no longer appropriate.
Matt Birkholz [Wed, 17 Jun 2015 02:18:21 +0000 (19:18 -0700)]
Remove without-interrupts from runtime/parser-buffer.scm.
It was only used to postpone aborts that would leave data structures
inconsistent.
Matt Birkholz [Wed, 17 Jun 2015 02:16:21 +0000 (19:16 -0700)]
Remove without-interrupts from runtime/gencache.scm.
It was only used to postpone aborts that would leave data structures
inconsistent. Access to these caches needs to be serial.
Matt Birkholz [Wed, 17 Jun 2015 02:15:57 +0000 (19:15 -0700)]
Remove without-interrupts from runtime/gdbm.scm.
It was only used to postpone aborts that would leak gdbfs.
Matt Birkholz [Wed, 17 Jun 2015 02:15:05 +0000 (19:15 -0700)]
Remove without-interrupts from runtime/crypto.scm.
It was only used to postpone aborts that would leak mhash contexts.
Matt Birkholz [Wed, 17 Jun 2015 02:13:46 +0000 (19:13 -0700)]
Remove without-interrupts from runtime/condvar.scm.
Multi-threaded access to the chain of waiters is already adequately
serialized by the condition-variable.lock. Without-interrupts was
only intended to postpone aborts that would leave a doubly-linked
chain without a complete pair of links.
Matt Birkholz [Sun, 12 Jul 2015 22:18:25 +0000 (15:18 -0700)]
Add without-interruption, to replace without-interrupts.
Without-interruption will replace without-interrupts wherever
exclusivity is not thought to be needed -- just uninterruptibility.
Without-interrupts is deprecated because it is broken in multi-
processing worlds where it cannot provide exclusive access to the heap
as it does in uniprocessing worlds.
Matt Birkholz [Sun, 12 Jul 2015 22:10:53 +0000 (15:10 -0700)]
mhash: Prepare the GC daemon to run concurrently with other threads.
Matt Birkholz [Thu, 23 Jul 2015 16:21:01 +0000 (09:21 -0700)]
gdbm: Prepare the GC daemon to run concurrently with other threads.
Matt Birkholz [Sun, 12 Jul 2015 22:42:00 +0000 (15:42 -0700)]
Add with-thread-mutex-try-lock.
Matt Birkholz [Sat, 11 Jul 2015 00:26:23 +0000 (17:26 -0700)]
Look for IO in yield-current-thread.
Matt Birkholz [Sat, 11 Jul 2015 19:32:52 +0000 (12:32 -0700)]
Add type-checking to thread-dead?.
Matt Birkholz [Wed, 17 Jun 2015 01:56:30 +0000 (18:56 -0700)]
debug.c (print_string): Summarize long strings.
Matt Birkholz [Sat, 6 Jun 2015 00:51:33 +0000 (17:51 -0700)]
Mark with-thread-events-blocked stack frames with the symbol.
These frames can then be recognized in Debug_Stack_Trace output.
Matt Birkholz [Wed, 1 Jul 2015 15:03:48 +0000 (08:03 -0700)]
Punt unused variable slots and mention of dangerous bindings.
Matt Birkholz [Sun, 12 Jul 2015 22:03:54 +0000 (15:03 -0700)]
Correct typos in src/wabbit/README.
Matt Birkholz [Tue, 23 Jun 2015 21:41:02 +0000 (14:41 -0700)]
svm: typo
Matt Birkholz [Wed, 1 Jul 2015 14:57:54 +0000 (07:57 -0700)]
doc: The User Manual is for version 9.2.
Matt Birkholz [Sun, 12 Jul 2015 21:52:32 +0000 (14:52 -0700)]
doc: In the microcode the "context" is called "dynamic-state".
And unparenthesize a sentence.
Matt Birkholz [Wed, 1 Jul 2015 14:54:06 +0000 (07:54 -0700)]
doc/index.html: Factor out redundant words.
Matt Birkholz [Wed, 1 Jul 2015 14:53:08 +0000 (07:53 -0700)]
doc: Punt old and redundant discussion of constant space.
Taylor R Campbell [Mon, 3 Aug 2015 02:53:25 +0000 (02:53 +0000)]
Add various math/float functions whose absence was getting in my way.
New functions:
- flo:copysign copy sign from one value to another
- flo:nextafter next representable floating-point number
- flo:sinh hyperbolic trig
- flo:cosh
- flo:tanh
- flo:asinh hyperbolic inverse trig
- flo:acosh
- flo:atanh
- flo:cbrt cube root
- flo:erf error function: 2/sqrt(pi) \int_0^x e^{-t^2} dt
- flo:erfc complement: 1 - erf(x)
- flo:gamma Gamma function: \int_0^\infty t^{x-1} e^{-t} dt
- flo:hypot Euclidean distance: sqrt(x^2 + y^2)
- flo:j0 Bessel function of first kind, order 0
- flo:j1 " " " " " " 1
- flo:jn " " " " " " n
- flo:y0 Bessel function of second kind, order 0
- flo:y1 " " " " " " 1
- flo:yn " " " " " " n
These are all in C99 and POSIX. For beta, incomplete Gamma, and
other such common critters, we'll have to do it ourselves.
XXX Need automatic tests.
Taylor R Campbell [Fri, 10 Jul 2015 17:46:53 +0000 (17:46 +0000)]
Mark microcode/scheme as phony so we always descend into microcode.
Taylor R Campbell [Fri, 10 Jul 2015 17:40:11 +0000 (17:40 +0000)]
Fix comment. Note it has been fixed in glibc as of 2014-04.
Taylor R Campbell [Fri, 10 Jul 2015 17:25:30 +0000 (17:25 +0000)]
Fix botched ()/#F split in continuation parser.
No more `The object (), passed as an argument to stream-car, is not a
pair.' when trying to debug SIGFPE!
Joe Marshall [Wed, 8 Jul 2015 18:35:10 +0000 (11:35 -0700)]
Print one of several messages on normal exit.
Taylor R Campbell [Wed, 8 Jul 2015 04:41:31 +0000 (04:41 +0000)]
Use correct time offset for file age test.
Joe Marshall [Mon, 6 Jul 2015 20:33:02 +0000 (13:33 -0700)]
Add procedure CUBE.
Joe Marshall [Mon, 6 Jul 2015 20:01:55 +0000 (13:01 -0700)]
Add CONS-STREAM* and CIRCULAR-STREAM macros.
Joe Marshall [Mon, 6 Jul 2015 16:54:33 +0000 (09:54 -0700)]
Merge with head.
Joe Marshall [Mon, 6 Jul 2015 16:52:28 +0000 (09:52 -0700)]
Fancy unparsing of streams.
Joe Marshall [Mon, 6 Jul 2015 16:04:05 +0000 (09:04 -0700)]
Better unparsing of promises.
Matt Birkholz [Mon, 6 Jul 2015 05:41:27 +0000 (22:41 -0700)]
Fix another typo in commit
2a447ff.
Matt Birkholz [Mon, 6 Jul 2015 01:21:25 +0000 (18:21 -0700)]
Fix typo in commit
2a447ff.
Taylor R Campbell [Sun, 5 Jul 2015 17:41:11 +0000 (17:41 +0000)]
Fix VECTOR-8B->HEXADECIMAL/UPPERCASE test.
Taylor R Campbell [Sun, 5 Jul 2015 17:39:59 +0000 (17:39 +0000)]
Add error checking to entity and apply hook operations.
Taylor R Campbell [Tue, 9 Jun 2015 04:22:11 +0000 (04:22 +0000)]
No recursion needed: use WITH-THREAD-MUTEX-LOCK.
Taylor R Campbell [Tue, 9 Jun 2015 04:22:07 +0000 (04:22 +0000)]
No recursion needed: use WITH-THREAD-MUTEX-LOCK.
Taylor R Campbell [Tue, 9 Jun 2015 04:22:01 +0000 (04:22 +0000)]
No recursion needed: use WITH-THREAD-MUTEX-LOCK.
Taylor R Campbell [Tue, 9 Jun 2015 04:21:50 +0000 (04:21 +0000)]
No recursion needed: use WITH-THREAD-MUTEX-LOCK.
Taylor R Campbell [Tue, 9 Jun 2015 04:21:41 +0000 (04:21 +0000)]
No recursion needed: use WITH-THREAD-MUTEX-LOCK.
Taylor R Campbell [Tue, 9 Jun 2015 04:21:20 +0000 (04:21 +0000)]
New WITH-THREAD-MUTEX-LOCKED rejects recursion like LOCK-THREAD-MUTEX.
Taylor R Campbell [Tue, 9 Jun 2015 03:44:38 +0000 (03:44 +0000)]
Revert "Remove support for recursion in WITH-THREAD-MUTEX-LOCKED."
This reverts commit
d7241d6fe8b151f6d15db9cac8fba44b074ca215.
Evidently people did rely on this.
Taylor R Campbell [Sun, 3 May 2015 03:04:40 +0000 (03:04 +0000)]
Use logarithmic balancing rather than bounded balancing for wttree.
Taylor R Campbell [Sun, 3 May 2015 00:05:05 +0000 (00:05 +0000)]
Factor out wttree balancing criteria.
Taylor R Campbell [Sun, 3 May 2015 00:03:44 +0000 (00:03 +0000)]
Add vector-8b<->hexadecimal tests.
Taylor R Campbell [Sun, 3 May 2015 00:04:31 +0000 (00:04 +0000)]
Fix hexadecimal->vector-8b for real.
Matt Birkholz [Fri, 19 Dec 2014 17:32:04 +0000 (10:32 -0700)]
Add outf_error_line; use it everywhere.
Use it for brevity. Later when each outf_ operation involves grabbing
a mutex, use it for efficiency.
Matt Birkholz [Fri, 19 Dec 2014 17:05:34 +0000 (10:05 -0700)]
Fix Do_Micro_Error to respect stack direction, and print arguments.
Matt Birkholz [Fri, 19 Dec 2014 16:56:32 +0000 (09:56 -0700)]
Use INTERRUPTABLE_EXTENT in OS_pause when !HAVE_SIGSUSPEND.
Matt Birkholz [Fri, 19 Dec 2014 16:54:31 +0000 (09:54 -0700)]
Just warn when set-debug-flags! is used on a non-debugging machine.
Matt Birkholz [Fri, 12 Dec 2014 17:02:35 +0000 (10:02 -0700)]
doc: Clean up doc-config.scm.
Matt Birkholz [Fri, 12 Dec 2014 17:01:53 +0000 (10:01 -0700)]
doc: Configure --disable-* should disable build as well as install.
Add a TARGETS variable to collect ENabled targets, like INST_TARGETS.
Taylor R Campbell [Mon, 17 Nov 2014 06:04:26 +0000 (06:04 +0000)]
Tweak condition variable locking.
- Use WITH-THREAD-MUTEX-LOCKED.
- Use ASSERT-THREAD-MUTEX-OWNED.
No functional changes intended.
Taylor R Campbell [Sun, 16 Nov 2014 20:25:27 +0000 (20:25 +0000)]
Allow thread barriers to be named.
Taylor R Campbell [Sun, 16 Nov 2014 20:24:42 +0000 (20:24 +0000)]
Show the condition, not just its report, in derived condition reports.
That way you can (debug #@n) it or M-x browse-continuation it.
Taylor R Campbell [Sun, 16 Nov 2014 18:53:41 +0000 (18:53 +0000)]
Fix timed condition variable waits.
Taylor R Campbell [Sun, 16 Nov 2014 18:53:28 +0000 (18:53 +0000)]
Sternly advise against non-debugging use of THREAD-MUTEX-OWNER.
Taylor R Campbell [Sun, 16 Nov 2014 18:52:58 +0000 (18:52 +0000)]
Remove support for recursion in WITH-THREAD-MUTEX-LOCKED.
Taylor R Campbell [Fri, 14 Nov 2014 04:47:04 +0000 (04:47 +0000)]
Don't let just any event wake THREAD-JOIN.
Taylor R Campbell [Fri, 14 Nov 2014 04:19:05 +0000 (04:19 +0000)]
Sort names in (runtime thread) package.
Taylor R Campbell [Fri, 14 Nov 2014 04:18:27 +0000 (04:18 +0000)]
Rename GUARANTEE-THREAD-MUTEX-OWNED to ASSERT-THREAD-MUTEX-OWNED.
Matt Birkholz [Thu, 13 Nov 2014 22:22:03 +0000 (15:22 -0700)]
Fluidize hook/exit and hook/quit. Add hook/%exit for Edwin.
Replace the fluid-let in src/edwin/intmod.scm with let-fluids. The
fluid-let kludge in SMP worlds causes Edwin to hang when killed.
Matt Birkholz [Thu, 13 Nov 2014 22:25:29 +0000 (15:25 -0700)]
Unfluidize (runtime boot-definitions) internal boot-inits.
Replace the fluid-let with its expansion into a dynamic-wind, which
works only if the bootstrap proceeds in one thread and thus
thread-local values for boot-inits are not needed.
Matt Birkholz [Thu, 13 Nov 2014 22:59:23 +0000 (15:59 -0700)]
runtime/thread-queue.scm: Use a mutex to serialize accesses.
Also, use #f events. The (lambda () unspecific) events accumulate
unnecessarily.
Matt Birkholz [Thu, 13 Nov 2014 23:03:08 +0000 (16:03 -0700)]
svm: Make the trap handlers static.
I won't vouch for any speed improvement. I just noticed all the
others were declared static.