sbcl.git
13 years ago1.0.41.5: x86: Implement memory-barrier-vops.
Alastair Bridgewater [Wed, 4 Aug 2010 18:02:45 +0000 (18:02 +0000)]
1.0.41.5: x86: Implement memory-barrier-vops.

  * Add the VOPs for the various memory-barriers.

  * Add the memory-barrier-vops feature to local-target-features on
x86 in make-config.sh.

13 years ago1.0.41.4: x86-64: Implement memory-barrier-vops.
Alastair Bridgewater [Wed, 4 Aug 2010 18:01:29 +0000 (18:01 +0000)]
1.0.41.4: x86-64: Implement memory-barrier-vops.

  * Add the VOPs for the various memory-barriers.

  * Add the memory-barrier-vops feature to local-target-features on
x86-64 in make-config.sh.

13 years ago1.0.41.3: ppc: Implement memory-barrier-vops.
Alastair Bridgewater [Wed, 4 Aug 2010 17:59:25 +0000 (17:59 +0000)]
1.0.41.3: ppc: Implement memory-barrier-vops.

  * Add the VOPs for inlining the various memory-barriers.

  * Add the memory-barrier-vops feature to local-target-features on
ppc systems in make-config.sh.

13 years ago"1.0.41.2": threads: Add memory-barrier framework.
Alastair Bridgewater [Wed, 4 Aug 2010 17:58:15 +0000 (17:58 +0000)]
"1.0.41.2": threads: Add memory-barrier framework.

  * New file, src/code/barrier.lisp, containing the baseline
implementation.

  * Added the barrier functions to the compiler function database.

  * Export the interface macro, BARRIER, from SB!THREAD and the
underlying barrier functions from SB!VM.

  * Document a new architecture-dependent build-time feature,
MEMORY-BARRIER-VOPS, for controlling the behavior and inlining of
the interpreter stubs for the barrier functions.

13 years ago1.0.41.1: much faster MAKE-INITIAL-DFUN
Christophe Rhodes [Fri, 30 Jul 2010 21:01:12 +0000 (21:01 +0000)]
1.0.41.1: much faster MAKE-INITIAL-DFUN

Don't attempt to precompute any kind of effective methods in
MAKE-INITIAL-DFUN (called from COMPUTE-DISCRIMINATING-FUNCTION, among
other places), because C-D-F is called really quite often.

This allows us to delete FINALIZE-SPECIALIZERS and
PRECOMPUTE-EFFECTIVE-METHODS, respectively responsible for about 3% each of
the time in loading asdf.fasl.  We can also delete the INITIAL-DISPATCH
discriminating function kind, which (to my surprise) was already not
mentioned in the internals documentation about the possible dfun
states.

13 years ago1.0.41: will be tagged as sbcl_1_0_41
Christophe Rhodes [Fri, 30 Jul 2010 12:55:15 +0000 (12:55 +0000)]
1.0.41: will be tagged as sbcl_1_0_41

13 years ago1.0.40.8: revert sb-bsd-sockets threadsafety patch
Christophe Rhodes [Fri, 30 Jul 2010 11:00:24 +0000 (11:00 +0000)]
1.0.40.8: revert sb-bsd-sockets threadsafety patch

Broke functionality completely on Darwin.

13 years ago1.0.40.7: socket-connect was not thread safe
cracauer [Fri, 23 Jul 2010 20:55:45 +0000 (20:55 +0000)]
1.0.40.7: socket-connect was not thread safe

https://bugs.launchpad.net/sbcl/+bug/505497

Committing diffs as supplied in the bug report after review and
testing.

Credits to Andrew Golding for the diffs and Jaap de Heer for the
initial report and reproducible test case.

13 years ago1.0.40.6: call an appropriate existing ctor from MAKE-INSTANCE (CLASS)
Christophe Rhodes [Mon, 19 Jul 2010 07:05:39 +0000 (07:05 +0000)]
1.0.40.6: call an appropriate existing ctor from MAKE-INSTANCE (CLASS)

The intuition here is that searching for a ctor is much cheaper than
the whole of the unoptimized make-instance machinery.  If a class has
many, many ctors, this may not be true, but that should be the rare
case.

Only call optimized ctors so that we don't risk endless recursion
through the fallback case.

13 years ago1.0.40.5: comment changes
Christophe Rhodes [Mon, 19 Jul 2010 07:02:48 +0000 (07:02 +0000)]
1.0.40.5: comment changes

reflows and typo fixes

13 years ago1.0.40.4: slight performance enhancement in gf initialisation
Christophe Rhodes [Mon, 19 Jul 2010 06:40:24 +0000 (06:40 +0000)]
1.0.40.4: slight performance enhancement in gf initialisation

in RAISE-METATYPE, use special variables to access system classes
rather than FIND-CLASS.  (LOAD-TIME-VALUE of FIND-CLASS doesn't work
as it is too early in the PCL bootstrap...)

13 years ago1.0.40.3: better non-ctor make-instance
Christophe Rhodes [Mon, 19 Jul 2010 06:34:36 +0000 (06:34 +0000)]
1.0.40.3: better non-ctor make-instance

Actually, the really expensive bit is the initarg validity checking.
Use the ctor machinery to cache the results of testing for initarg
validity for make-instance as well as reinitialize-instance.  (Why
wasn't this done before?)

With this change, asdf.fasl loads about 10% faster.

13 years ago1.0.40.2: ctor machinery bugfixes
Christophe Rhodes [Mon, 19 Jul 2010 06:30:07 +0000 (06:30 +0000)]
1.0.40.2: ctor machinery bugfixes

One bug was a simple harmless thinko, limiting the cache for validity
checking of reinitialize-instance initargs to only one list of keys.

The other is actually a correctness problem: addition or removal of
methods on MAKE-INSTANCE and ALLOCATE-INSTANCE would invalidate the
wrong set of initarg validity caches and reset the wrong ctors.  I
think at the moment this bug is tricky to trigger, because those
methods have no effect on reinitialize-instance initarg checking, and
fallback ctors on non-standard metaclasses are very conservative in
their assumptions.

13 years ago1.0.40.1: fix return value of WRITE
Gabor Melis [Fri, 16 Jul 2010 07:42:22 +0000 (07:42 +0000)]
1.0.40.1: fix return value of WRITE

Used to return NIL when the compiler macro for the constant keyword
argument case triggered.

Add test.

13 years ago1.0.40: will be tagged as sbcl_1_0_40
Christophe Rhodes [Wed, 30 Jun 2010 21:36:22 +0000 (21:36 +0000)]
1.0.40: will be tagged as sbcl_1_0_40

13 years ago1.0.39.24: win32: Fix foreign function name conversion.
Alastair Bridgewater [Wed, 30 Jun 2010 16:25:01 +0000 (16:25 +0000)]
1.0.39.24: win32: Fix foreign function name conversion.

  * In 1.0.39.15, the win32 case for foreign function names was
accidentally removed when the darwin/dlshim case (the same case)
was removed.  Re-added the win32 case.

13 years ago1.0.39.23: Fix run-sbcl.sh to use absolute paths when necessary.
Alastair Bridgewater [Sun, 27 Jun 2010 19:41:07 +0000 (19:41 +0000)]
1.0.39.23: Fix run-sbcl.sh to use absolute paths when necessary.

  * The new ASDF 2 requires absolute paths in places where SBCL
historically used relative paths.  The last(?) remaining place
where this happens is the SBCL_HOME environment variable set up
by run-sbcl.sh.  Fixed by introducing a readlink -f to generate
an absolute path to the base SBCL directory.

13 years ago1.0.39.22: "upgrade" to ASDF 2.003
Cyrus Harmon [Sat, 26 Jun 2010 05:03:58 +0000 (05:03 +0000)]
1.0.39.22: "upgrade" to ASDF 2.003

13 years ago1.0.39.21: more ASDF2 cleanup
Cyrus Harmon [Thu, 24 Jun 2010 05:08:58 +0000 (05:08 +0000)]
1.0.39.21: more ASDF2 cleanup

 * update the asdf README and texinfo documentation

 * update asdf license

 * fix pulling documentation from upstream

13 years ago1.0.39.20: more asdf logical pathname cleanup
Cyrus Harmon [Wed, 23 Jun 2010 03:12:35 +0000 (03:12 +0000)]
1.0.39.20: more asdf logical pathname cleanup

 * use #p"..." for logical pathnames instead of 1) just "" or
   #.(logical-pathname "...")

13 years ago1.0.39.19: asdf2 merge from upstream
Cyrus Harmon [Tue, 22 Jun 2010 17:02:25 +0000 (17:02 +0000)]
1.0.39.19: asdf2 merge from upstream

 * replaced asdf.lisp with asdf.lisp 2.102

 * wrap logical pathname in sb-rotate-byte with #.(logical-pathname ...)

13 years ago1.0.39.18: Use SB-VM:WORD in (DEFSTRUCT HASH-TABLE).
Tobias C. Rittweiler [Sun, 20 Jun 2010 07:50:14 +0000 (07:50 +0000)]
1.0.39.18: Use SB-VM:WORD in (DEFSTRUCT HASH-TABLE).

13 years ago1.0.39.17: Reduce stress level of sb-concurrency tests.
Tobias C. Rittweiler [Sun, 20 Jun 2010 07:48:24 +0000 (07:48 +0000)]
1.0.39.17: Reduce stress level of sb-concurrency tests.

Reduce the stress level of the MAILBOX tests by a factor of 10.

Reasons:

  a) As contrib tests are run as part of a normal SBCL build, the
     mailbox tests are executed each time SBCL is built. And they
     really result in a few minutes of 100% cpu usage and high load
     averages because of many simultaneously running threads.

  b) On BSD platforms, the tests were reported several times in past
     to fail. From what I'm told (and if I remember correctly), the
     issue is, however, not necessarily concurrency bugs, but a
     coarser SLEEP granularity than on Linux platform.

13 years ago1.0.39.16: tls-slot allocation not thread-safe
cracauer [Mon, 14 Jun 2010 22:32:05 +0000 (22:32 +0000)]
1.0.39.16: tls-slot allocation not thread-safe

Committing James Knight's patch from
https://bugs.launchpad.net/sbcl/+bug/589293

Tested on amd64 and x86 with same failures before and after.

Quotes:

It seems as though the ALLOC-TLS-INDEX-IN-* code is not thread-safe. I
cannot figure out how it's not thread-safe, because it looks correct
to me, so far as I can see.

But this test case shows that it's not.

sbcl --eval '(load (compile-file "thread-test.lisp"))' --eval "(run-test)" --eval "(quit)"

It will fail with something like:
   The assertion (BOUNDP '*VAR50*) failed.
The variable number will vary randomly, of course.

SBCL 1.0.37.44. Debian Linux 2.6.32-amd64, x86-64.

%%

Okay, turns out to be an utterly trivial problem. This is the
disassembly of SB-VM::ALLOC-TLS-INDEX-IN-RAX. See instructions
0x20000f42 and 0x20000f47. You can't use %rax as the new value and the
compare-to value for cmpxchg! So, the lock was never actually
taken. The variants for allocating in everything else worked
fine. Just RAX is broken.

0x20000f38: mov %rbp,0xb8(%r12)
0x20000f40: push %rcx
0x20000f41: push %rax
0x20000f42: mov $0x1,%eax
0x20000f47: xor %eax,%eax
0x20000f49: lock cmpxchg %rax,0x20100b88
0x20000f53: jne 0x20000f42
0x20000f55: pop %rcx
0x20000f56: mov 0x21(%rcx),%rax
0x20000f5a: or %rax,%rax
0x20000f5d: jne 0x20000f8d
0x20000f5f: mov 0x20100b48,%rax
0x20000f67: cmp $0x8000,%rax
0x20000f6d: jl 0x20000f80
0x20000f6f: movq $0x0,0xb8(%r12)
0x20000f7b: jmpq 0x20001874
0x20000f80: addq $0x8,0x20100b48
0x20000f89: mov %rax,0x21(%rcx)
0x20000f8d: xor %ecx,%ecx
0x20000f8f: xchg %rcx,0x20100b88
0x20000f97: pop %rcx
0x20000f98: xor %rbp,0xb8(%r12)
0x20000fa0: je 0x20000fa4
0x20000fa2: int3
0x20000fa3: 0x09
0x20000fa4: ret

13 years agoGIT GATEWAY: Remove files that were deleted in 2006.
Andreas Fuchs [Sun, 13 Jun 2010 08:01:11 +0000 (10:01 +0200)]
GIT GATEWAY: Remove files that were deleted in 2006.

These file removals were never picked up, probably due to a git bug.
The changes corresponding to these file deletions are:

  * b66385e2031fc2cac17dd129df0af400beb48a22 (0.9.16.38)
    - src/compiler/ir1-step.lisp
  * 28ed41eb0eed3f0c1baeebf10793a3d21cb0eb9d
    - src/runtime/ppc-darwin-{langinfo,dlshim}.[ch]
    - src/runtime/x86-darwin-langinfo.c

Thanks to Cyrus Harmon for alerting me to this issue.

13 years ago1.0.39.15: delete all traces of the darwin dlshim
Cyrus Harmon [Sun, 13 Jun 2010 04:40:20 +0000 (04:40 +0000)]
1.0.39.15: delete all traces of the darwin dlshim

 * following up on previous commits which still used the shim with the
   :dlshim feature, now completely remover all traces of the dlshim.

13 years ago1.0.39.14: prepend an underscore to ldso stubs
Cyrus Harmon [Sun, 13 Jun 2010 02:39:40 +0000 (02:39 +0000)]
1.0.39.14: prepend an underscore to ldso stubs

 * a leading underscore keeps the cross-compiling linker happy
   and matches the way we do things on x86oid darwins.

13 years ago1.0.39.13: restore darwin/ppc building
Cyrus Harmon [Sat, 12 Jun 2010 22:59:53 +0000 (22:59 +0000)]
1.0.39.13: restore darwin/ppc building

 * fix ldso stubs to work without the dlshim

 * hack to avoid calling dlclose on the main executable
   for darwin/ppc

13 years ago1.0.39.12: remove darwin-langinfo
Cyrus Harmon [Sat, 12 Jun 2010 22:25:31 +0000 (22:25 +0000)]
1.0.39.12: remove darwin-langinfo

 * remove darwin-langinfo.c/h from Config.*-darwin and
   grovel-headers.c

 * revert explicit setting of *default-c-string-external-format* to
   latin-1 in sb-posix test.

13 years ago1.0.39.11: fix readdir for :inode64 builds
Cyrus Harmon [Sat, 12 Jun 2010 20:44:42 +0000 (20:44 +0000)]
1.0.39.11: fix readdir for :inode64 builds

 * readdir now calls readdir$INODE64 when buildling with :inode64
   (launchpad bug #592897)

13 years ago1.0.39.10: cleanup sb-posix tests for darwin
Cyrus Harmon [Fri, 11 Jun 2010 22:31:49 +0000 (22:31 +0000)]
1.0.39.10: cleanup sb-posix tests for darwin

 * check for the error codes darwin gives back

 * use :latin-1 for *default-c-string-external-format* in readdir test

13 years ago1.0.39.9: improvements to the manual
Christophe Rhodes [Sun, 6 Jun 2010 20:43:57 +0000 (20:43 +0000)]
1.0.39.9: improvements to the manual

These improvements mainly centre around better indexing, including
some nifty trickery to get suitably collated and aligned index
entries (to cope with issues like *earmuffs* and sb-foo package
prefixes).  This patch also incorporates work by Robert Goldman to
document the commands for enabling and disabling the debuggers.

The remainder of this log message is a squashed version of my git
branch's log messages:

improve text relating to my support availability

Remove a stray comma in instructions for signal-related bug reporting

Patch from Robert Goldman for enable/disable-debugger documentation

trick texinfo's collation engine into producing a better index

The issue is that the sort order and what is printed (both in the
index and as the title of a definition entry) are deeply tied together
in texinfo, and there's no obvious way short of rewriting lots of TeX
code to undo that.  There is one get-out clause, though: texinfo
macros are replaced by their arguments.  So define a number of macros
which hide from the collation engine things that we would rather not
play a part in the sorting (package names, "(setf", *earmuffs*)

In the process, note that @deffoo in texinfo automatically produces an
index entry, so get rid of the apparently redundant extra index
entries produced by docstrings.lisp
Mostly move to using the new indexing helper macros

Only mostly: there are a few remaining issues.  The first is
declarations, which are treated as types; I think they might warrant
their own index; similarly, various commands (debugger, inspector)
aren't really functions.  Hardest of all is the ffi chapter, which has
handwritten function documentation which is highly similar to but not
exactly the same as the docstrings for those operators; it would be
good to merge the documentation into the docstrings, include the
autogenerated texinfo snippets into the manual, and thereby gain
complete consistency.
add some index entries from the efficiency chapter

... because why not?
manually (!) change the entries for FFI-related functions and macros

Making the docstrings match the text match reality is an exercise for
the future.
make index in info form mostly work

info readers apparently parse the formatted index to work out where to
go.  This is hilariously bad if the index entries contain colons, so
define macros conditional on output format to make sure that they
don't in info.
better, more useful indexes

Now that collation is sorted (!), getting the display of index entries
to be useful is important.  This not-quite-general trick is to make
the package name as small as possible, have the colon always in the
same horizontal position, and arrange that the package name extends at
most three characters ("sb-") into the left margin.  This is the most
tolerable I can find.

Continue not having package information at all in info format; in
other formats, place the package information after the symbol name.
This probably goes wrong in corner cases like
(setf sb-mop:symbol-value-using-class)
deal with remaining manually-documented functions

make documentation for declarations consistent

Arbitrarily decide that declarations belong in the function index
rather than the type index; use the package prefix texinfo macros to
get them properly indented.
One more manually-documented thing which needed a package macro decoration

Fix the nopkg{} macro to align index entries in TeX mode

Use it for debugger commands.

13 years ago1.0.39.8: Inline-compare more character codes on SB-UNICODE PPC.
Alastair Bridgewater [Sun, 6 Jun 2010 19:53:44 +0000 (19:53 +0000)]
1.0.39.8: Inline-compare more character codes on SB-UNICODE PPC.

  * In 1.0.38.5, I disabled the -c character compare VOPs on SB-UNICODE
because the instruction used (cmplwi) was limited to a 16-bit constant.

  * Added a predicate to determine if a character can safely be used in
the -c character compare VOPs.

  * Changed the required constant type on the -c character compare VOPs
from CHARACTER to (SATISFIES <the-new-predicate>).

  * Back in the commit comment for 1.0.38.5 I said that there was no
good way to conditionally use the VOPs.  Looks like I was wrong, unless
you want to argue that SATISFIES types are bad.

13 years ago1.0.39.7: Make TRACE :ENCAPSULATE NIL work on PPC.
Alastair Bridgewater [Sun, 6 Jun 2010 19:51:18 +0000 (19:51 +0000)]
1.0.39.7: Make TRACE :ENCAPSULATE NIL work on PPC.

  * SIGNAL-CONTEXT-FRAME (debug-int.lisp) was passing a bogus
parameter to COMPUTE-CALLING-FRAME on non-x86oids, causing an
unknown immediate object to be constructed.  Fixed, and KLUDGEd
to still work on x86oids.

  * fun_end_breakpoint_guts (ppc-assem.S) wasn't implemented at
all, just stubbed out to provide the symbols that the core looks
for when compiling MAKE-BOGUS-LRA (debug-int.lisp).

  * The implementation of fun_end_breakpoint_guts on non-PPC is
sparsely explained at best.  Addressed in the new PPC version.

  * The usual implementation of fun_end_breakpoint_guts leaves
setting the LRA header data to MAKE-BOGUS-LRA but this is done
after attempting to create the LRA object, which fails on GENCGC
systems due to the sanity checking of the pointer.  On PPC, this
is addressed by setting the LRA header data by dead reckoning in
ppc-assem.S.

  * In MAKE-BOGUS-LRA, don't bother setting the LRA header data
if it is known to already be correct.

13 years ago1.0.39.6: valid_lisp_pointer_p() is gencgc-specific, not x86oid-specific.
Alastair Bridgewater [Sun, 6 Jun 2010 19:43:30 +0000 (19:43 +0000)]
1.0.39.6: valid_lisp_pointer_p() is gencgc-specific, not x86oid-specific.

  * Changed SB-KERNEL:MAKE-LISP-OBJ (src/code/debug-int) to use
valid-lisp-pointer-p on all gencgc targets, not just x86oids.

  * Changed valid_lisp_pointer_p() (src/runtime/gencgc.c) to build on
all targets, not just x86oids.

  * Added a special-case to looks_like_valid_lisp_pointer_p() to
correctly handle LRA objects (RETURN_PC_HEADER_WIDETAG) on non-x86oid
targets (though, really, we probably should have an :IMPLICIT-LRA
feature for this sort of nonsense).

13 years ago1.0.39.5: Initial attempt to make breakpoints work on PPC.
Alastair Bridgewater [Sun, 6 Jun 2010 19:41:10 +0000 (19:41 +0000)]
1.0.39.5: Initial attempt to make breakpoints work on PPC.

  * The actual breakpoint trap instruction was wrong, acting as a
NOP instead of trapping.  Fixed.

  * A bit of cleanup and fixes surrounding setting up breakpoints
and dealing with after-breakpoints.

  * An initial implementation of the clever part of
arch_do_displaced_inst().

  * Added a couple of new arch-os-specific functions to find the
parts of the context required for arch_do_displaced_inst().  Stubbed
out for darwin and bsd, probably broken on GLIBC231_STYLE_UCONTEXT
linux systems.

  * Everything beyond fixing the breakpoint trap instruction not
actually tested, because it turned out that the entire breakpoint
system is broken on all non-x86oid targets, due to something in
src/code/debug-int.lisp.

14 years ago1.0.39.4: fix build on non-darwin and ppc/darwin platforms
Cyrus Harmon [Thu, 3 Jun 2010 14:43:15 +0000 (14:43 +0000)]
1.0.39.4: fix build on non-darwin and ppc/darwin platforms

  * fix conditional include of langinfo.h

  * conditionalize the darwin/ppc Config file for :dlshim

14 years ago1.0.39.3: support building on darwin x86 and x86-64 without the dlshim
Cyrus Harmon [Thu, 3 Jun 2010 04:39:50 +0000 (04:39 +0000)]
1.0.39.3: support building on darwin x86 and x86-64 without the dlshim

  * x86 config -mmacosx-version-min cleanup

  * remove dlshim feature in make-config.sh

  * fix extern-alien-name and ldso naming conventions

  * kludge in load-cold-foreign-symbol-table to strip off the leading
    #\_ from the nm parsing

  * change dependency on ldso stubs for dlopen and friends to be
    #!-dlshim instead of #!-darwin

  * remove Config.x86-64-darwin9+ and replace with makefile
    conditionals

  * add :dlshim feature for darwin in make-config.sh and rework the
    darwin9+ stuff

  * make grovel-headers.c load genesis/config.h first so that we can
    use the LISP_FEATURE_xxx conditionals earlier

14 years ago1.0.39.2: Fix symbol-name-conflict resolution test from 1.0.39.1.
Alastair Bridgewater [Sun, 30 May 2010 00:40:34 +0000 (00:40 +0000)]
1.0.39.2: Fix symbol-name-conflict resolution test from 1.0.39.1.

  * Before signalling a name-conflict in IMPORT due to a symbol found
previously on the arglist, remove the earlier symbol from the list of
symbols to add to the package (one or the other will be shadowing-imported,
and there's no further check for name collision.

14 years ago1.0.39.1: Test case for symbol-conflict resolution bug on import.
Alastair Bridgewater [Sun, 30 May 2010 00:32:11 +0000 (00:32 +0000)]
1.0.39.1: Test case for symbol-conflict resolution bug on import.

  * If two symbols of the same name are IMPORTed to a package that does
not yet have a symbol of that name accessible, and the latter of the two
symbols is chosen during conflict resolution, the former is also added
to the package, as is detectable via do-symbols.

14 years ago1.0.39: will be tagged as sbcl_1_0_39
Christophe Rhodes [Sat, 29 May 2010 19:33:42 +0000 (19:33 +0000)]
1.0.39: will be tagged as sbcl_1_0_39

14 years ago1.0.38.12: Fix FP traps on PPC/Linux.
Alastair Bridgewater [Mon, 24 May 2010 02:23:15 +0000 (02:23 +0000)]
1.0.38.12: Fix FP traps on PPC/Linux.

  * Linux on most platforms, including PPC, kicks off its signal
handlers with a cleared FP control word.  We already have a hook to deal
with this, so enable it.

  * The implementation of said hook on PPC/Linux was broken, largely due
to a variable-size mismatch in a KLUDGE it uses.  Fixed and documented
the KLUDGE, added support for preserving the current rounding mode, and
enabled the actual restoration of the FP control word.

  * NetBSD isn't the only target which requires :INVALID exceptions to
be disabled, it also matters on PPC.  Fixed the default control mode.

  * Fix up the test suite to reflect the current expectations for
float.pure.lisp tests.

14 years ago1.0.38.11: Enable floating-point exception delivery on PPC/Linux.
Alastair Bridgewater [Sun, 23 May 2010 22:49:58 +0000 (22:49 +0000)]
1.0.38.11: Enable floating-point exception delivery on PPC/Linux.

  * For some reason, Linux disables floating-point exception delivery
by default.  Use the PR_SET_FPEXC prctl (new in 2.4.21 and 2.5.32) to
enable it in "precise" mode (possibly overkill).

  * This is necessary but not sufficient to fix one of the failing
tests in float.pure.lisp.

  * Given that this is only necessary for one test case, the test
suite has woefully incomplete coverage of floating-point exceptions.

14 years ago1.0.38.10: Support for building on OpenBSD/PPC (patch by Josh Elsasser).
Alastair Bridgewater [Sun, 23 May 2010 18:23:59 +0000 (18:23 +0000)]
1.0.38.10: Support for building on OpenBSD/PPC (patch by Josh Elsasser).

  * Dynamic space assignments.

  * New Config.* makefile fragment.

  * OpenBSD-specific support in ppc-arch.c and ppc-bsd-os.c

  * Fixed test suite issues relating to OpenBSD/PPC.  This was that the
foreign stack alignment needed setting and that OpenBSD, unlike other
PowerPC targets, requires -fPIC in CFLAGS when building shared objects.

  * It turns out that os_context_sp_addr() in ppc-bsd-os.c is only used
when ARCH_HAS_STACK_POINTER is set, which only occurs on x86oid systems
at the present time.

14 years ago1.0.38.9: Integer callback result fixes.
Alastair Bridgewater [Fri, 21 May 2010 01:03:25 +0000 (01:03 +0000)]
1.0.38.9: Integer callback result fixes.

  * Callback results should be typechecked based on their declared
type, but stored as if they were the full width of a machine register.

  * Fixed sb-alien::alien-callback-lisp-wrapper-lambda to make this
happen properly.

  * Updated corresponding tests (formerly callback.impure.lisp /
sign-extension and underflow-detection) to cover 16-bit cases, which
would have broken on all targets, not merely 64-bit targets.

  * As a minor side note, assistance in testing the changes in 1.0.38.8
was provided by one Andreas Selfjord Eriksen, but I forgot to note this
fact in the commit message.  Mea Culpa.

14 years ago1.0.38.8: Test suite cleanups.
Alastair Bridgewater [Thu, 20 May 2010 22:09:39 +0000 (22:09 +0000)]
1.0.38.8: Test suite cleanups.

  * Changed the impure test runner to be more in line with what used
to happen when it used fork() instead of RUN-PROGRAM (--noprint and
--disable-debugger, don't allow RUN-PROGRAM to use the inherit-stdin
code path).

  * Re-enabled the (RUN-PROGRAM INHERIT-STDIN) test, as it no longer
hangs on ppc/linux, x86-64/linux, or x86-64/darwin, the platforms
which prompted the test to be disabled.

  * Fixed the failure mode of dynamic-extent.impure.lisp test case
HANDLER-CASE-BOGUS-COMPILER-NOTE to fail the test case instead of
attempting to enter the debugger (due to COMPILER-NOTE not being a
subclass of ERROR).

  * Disabled the x86-64 SSE floating-point tests on non-x86oid
platforms due to the use of x86oid-only SB-VM::TOUCH-OBJECT in the
test code causing a package lock error.

  * Registered all tests that fail on PPC/Linux as :fails-on :ppc.

  * Removed a number of :fails-on clauses that appear to be out of
date.

14 years ago1.0.38.7: fix clisp build for ppc
Nathan Froyd [Mon, 10 May 2010 00:39:12 +0000 (00:39 +0000)]
1.0.38.7: fix clisp build for ppc

LP #576587, thanks to Josh Elsasser for the patch.

14 years ago1.0.38.6: Clear higher order bits for SSE operations that don't
Paul Khuong [Thu, 6 May 2010 13:49:24 +0000 (13:49 +0000)]
1.0.38.6: Clear higher order bits for SSE operations that don't

 * SQRTSD, CVT{SS,SD}2{SS,SD} and CVTSI2{SS,SD} leave the high-order
   bits of the result as-is. These are the only (hopefully) operations
   we use that have a single input, so we must explicitly clear out
   the destination register.

 * Probably a performance fix too, as it breaks dependency chains on
   the destination register.

 * The bug was relatively hard to observe. Raymond Toy reported seeing
   and fixing something similar on maxima/CMUCL. Brittle test case
   added.

14 years ago1.0.38.5: PPC character handling fixes.
Alastair Bridgewater [Sat, 1 May 2010 00:15:10 +0000 (00:15 +0000)]
1.0.38.5: PPC character handling fixes.

  * SAP-REF-32LE referred to SAP-REF-16 instead of SAP-REF-16LE on
non-x86oid platforms, incorrect for all big-endian targets.

  * The immediate-character MOVE function was using a 16-bit-only
load instruction, which was insufficient for unicode operation.

  * The -c (constant) character compare VOPs use a compare
instruction with a 16-bit immediate field.  Disabled on unicode
(there's no good way to conditionally use them when the code
point of the constant character fits a signed-byte 16).

  * Cleaned up some external-format.impure.lisp test-cases, adding
with-test and names as needed.

14 years ago1.0.38.4: Scrub control stack after scavenging on non-x86oid gencgc.
Alastair Bridgewater [Fri, 30 Apr 2010 16:53:16 +0000 (16:53 +0000)]
1.0.38.4: Scrub control stack after scavenging on non-x86oid gencgc.

  * We scavenge the control stack as if it is entirely boxed data,
rewriting pointers as necessary.

  * Stack frames tend to contain uninitialized words, which is fine so
long as they are immediate data or valid pointers (they will be
counted as live data, so the scavenge may be more conservative than
necessary, but this is not an error).

  * The area beyond the current stack top is not scavenged, as it is not
live data.

  * Cheneygc scrubs the control stack (clears the area beyond the stack
top) once it (the control stack) has been scavenged.

  * Gencgc on non-x86oids (when precise stack scavenging is done) has
not been scrubbing the control stack, leading to the possibility of
having stale pointers in the active heap area.

  * Scrubbing the control stack after scavenging it reduces if not
eliminates the random GC faults observed on PPC.

  * All of this explanation probably belongs in a document describing
the hows and whys of GC on SBCL, not merely in a commit message.

14 years ago1.0.38.3: PPC linkage-table fix.
Alastair Bridgewater [Fri, 30 Apr 2010 16:50:42 +0000 (16:50 +0000)]
1.0.38.3: PPC linkage-table fix.

  * arch_write_linkage_table_jmp() on PPC was overrunning the linkage
table entry space by one useless (duplicated) instruction, which loses
when updating the linkage-table if maphash returns entries in any order
other than by ascending linkage-table entry address.

14 years ago1.0.38.2: Gencgc error-checking fixes.
Alastair Bridgewater [Fri, 30 Apr 2010 16:48:10 +0000 (16:48 +0000)]
1.0.38.2: Gencgc error-checking fixes.

  * Use %p instead of %x in error messages to avoid truncating pointers
to 32 bits on 64 bit platforms.

  * Count pointers to thread stack spaces as being valid (presuming that
they are created by dynamic-extent allocation).

  * Count pointers to funcallable_instance_tramp as being valid (not an
issue on x86oids, but it's a boxed pointer on non-x86oid platforms).

14 years ago1.0.38.1: Fix undefined-function bug-353 tests on x86oids.
Alastair Bridgewater [Fri, 30 Apr 2010 16:46:48 +0000 (16:46 +0000)]
1.0.38.1: Fix undefined-function bug-353 tests on x86oids.

  * In undefined_tramp, move return address from passing location to
storage location before trapping.

14 years ago1.0.38: will be tagged as sbcl_1_0_38
Christophe Rhodes [Fri, 30 Apr 2010 15:42:46 +0000 (15:42 +0000)]
1.0.38: will be tagged as sbcl_1_0_38

14 years ago1.0.37.74: support NetBSD-current
Christophe Rhodes [Fri, 30 Apr 2010 10:56:41 +0000 (10:56 +0000)]
1.0.37.74: support NetBSD-current

... at least if I've done everything right.  Slushy freezes, don't you
just love them?

Also don't run the run-program inherit-stdin test, because it hangs.

14 years ago1.0.37.73: Remove the one place we assumed constant LVARs referred literals
Paul Khuong [Tue, 27 Apr 2010 16:19:22 +0000 (16:19 +0000)]
1.0.37.73: Remove the one place we assumed constant LVARs referred literals

 * Resulted in a type mismatch or subtle errors during compilation with
   singleton types.

   Reported by Chun Tian (binghe) on sbcl-devel

14 years ago1.0.37.72: Fix ugliness in PRINT-UNREADABLE-OBJECT
Tobias C. Rittweiler [Tue, 27 Apr 2010 09:07:58 +0000 (09:07 +0000)]
1.0.37.72: Fix ugliness in PRINT-UNREADABLE-OBJECT

  * If one used :TYPE NIL on it, one could sometimes get printed
    representations that looked like #<\nFOO...> (notice the newline.)

  * Test case included.

  * Fix some WITH-TEST forms of previous commit.

14 years ago1.0.37.71: Minor test suite tweaks.
Tobias C. Rittweiler [Tue, 27 Apr 2010 07:19:56 +0000 (07:19 +0000)]
1.0.37.71: Minor test suite tweaks.

  * Wrap WITH-TESTS around bare ASSERTS in pprint.impure.lisp.

  * Add #+sb-eval to test excercising the interpreter. (S.Boukarev)

14 years ago1.0.37.70: Fix PRINT-OBJECT for RANDOM-STATE
Paul Khuong [Mon, 26 Apr 2010 23:15:09 +0000 (23:15 +0000)]
1.0.37.70: Fix PRINT-OBJECT for RANDOM-STATE

 * Discovered by Hans Hubner, reported by madnificient on #lisp.

14 years ago1.0.37.69: Avoid emitting instructions (LODS, MOVSXD) that confuse others
Paul Khuong [Mon, 26 Apr 2010 21:51:11 +0000 (21:51 +0000)]
1.0.37.69: Avoid emitting instructions (LODS, MOVSXD) that confuse others

 * LODS is probably slow nowadays, and isn't supported by valgrind. Remove
   one use in calling VOPs.

 * Some disassemblers don't like useless (e.g. 32 bit to 32 bit) MOVSXD.
   Convert them to MOV.

14 years ago1.0.37.68: Downgrade WARNING to STYLE-WARNING for *possible* type errors
Paul Khuong [Mon, 26 Apr 2010 21:47:39 +0000 (21:47 +0000)]
1.0.37.68: Downgrade WARNING to STYLE-WARNING for *possible* type errors

 * Detect some cases that might not lead to type errors, and signal
   a STYLE-WARNING instead of a WARNING then.

14 years ago1.0.37.67: Reset a toplevel INLINE declaration for READ-BYTE
Paul Khuong [Mon, 26 Apr 2010 21:42:58 +0000 (21:42 +0000)]
1.0.37.67: Reset a toplevel INLINE declaration for READ-BYTE

 * It used to remain declaimed inline after load.lisp.
   Report and patch by Stas Boukarev.

14 years ago1.0.37.66: Fix the build on alpha
Paul Khuong [Mon, 26 Apr 2010 21:39:52 +0000 (21:39 +0000)]
1.0.37.66: Fix the build on alpha

 * There was a type (SC!C) in a VOP definition...

14 years ago1.0.37.65: Perform range reduction on x87 transcendentals
Paul Khuong [Mon, 26 Apr 2010 21:38:19 +0000 (21:38 +0000)]
1.0.37.65: Perform range reduction on x87 transcendentals

  * ... instead of returning 0.0 arbitrarily.

14 years ago1.0.37.64: Fixtransforms for float TRUNCATE
Paul Khuong [Mon, 26 Apr 2010 21:34:34 +0000 (21:34 +0000)]
1.0.37.64: Fixtransforms for float TRUNCATE

 * Detect ignored secondary values correctly

 * Handle being unused (no result LVAR) without dying at compile-time

14 years ago1.0.37.63: Test for the correct range when eliding range reduction on x87
Paul Khuong [Mon, 26 Apr 2010 21:15:34 +0000 (21:15 +0000)]
1.0.37.63: Test for the correct range when eliding range reduction on x87

 * We now test for a maximal magnitude of 2^63, not 2^64.

14 years ago1.0.37.62: More robust reciprocal exactitude test
Paul Khuong [Mon, 26 Apr 2010 21:12:33 +0000 (21:12 +0000)]
1.0.37.62: More robust reciprocal exactitude test

 * Trying to divide by tiny powers of 2 could result in compile-time
   errors.

14 years ago1.0.37.61: Ensure GCD always returns positive values
Paul Khuong [Mon, 26 Apr 2010 21:07:06 +0000 (21:07 +0000)]
1.0.37.61: Ensure GCD always returns positive values

 Fixes lp#413680.

14 years ago1.0.37.60: fix backtick problem breaking e.g. literal struct parsing.
cracauer [Fri, 23 Apr 2010 18:25:51 +0000 (18:25 +0000)]
1.0.37.60: fix backtick problem breaking e.g. literal struct parsing.

Fix a typo that sneaked in when committing a diff submitted by Stas
Boukarev, version 1.0.36.21, launchpad bug #309093.

This makes literal struct parsing work again.

(defstruct foo (r nil :type (or null simple-vector)))
#S(foo :r #(#x00 #x11 #x22 #x33 #x44 #x55 #x66 #x77))

==> now works again.

14 years ago1.0.37.59: micro-optimize x86oid signed-word checking
Nathan Froyd [Sun, 18 Apr 2010 20:20:16 +0000 (20:20 +0000)]
1.0.37.59: micro-optimize x86oid signed-word checking

Combine MOV/CMP by using CMP with a memory operand.  Saves a byte.

14 years ago1.0.37.58: micro-optimize x86 lowtag testing
Nathan Froyd [Sun, 18 Apr 2010 19:28:02 +0000 (19:28 +0000)]
1.0.37.58: micro-optimize x86 lowtag testing

Instead of MOV/AND/CMP, use LEA/TEST, which is one byte shorter.

Delete AL-LOADED in %TEST-LOWTAG and %TEST-HEADERS as well, since that
parameter is unused and attempting to make the above optimization work
in the face of that option would be tricky.

14 years ago1.0.37.57: better DEFMETHOD pretty-printing
Nikodemus Siivola [Thu, 8 Apr 2010 07:46:12 +0000 (07:46 +0000)]
1.0.37.57: better DEFMETHOD pretty-printing

 No more #'FOO in lambda-lists.

14 years ago1.0.37.56: no more :NEW-OWNER in GRAB-MUTEX
Nikodemus Siivola [Wed, 7 Apr 2010 17:23:41 +0000 (17:23 +0000)]
1.0.37.56: no more :NEW-OWNER in GRAB-MUTEX

 ...and I'm sorely tempted to make GET-MUTEX signal an error if the
 argument is anything but NIL or current thread...

14 years ago1.0.37.55: typo in src/runtime/sunos-os.c
Nikodemus Siivola [Wed, 7 Apr 2010 16:45:30 +0000 (16:45 +0000)]
1.0.37.55: typo in src/runtime/sunos-os.c

 fault_addr where it should have been addr.

 Hopefully fixes lp#538689.

14 years ago1.0.37.54: more robust runtime executable path detection
Nikodemus Siivola [Wed, 7 Apr 2010 16:14:21 +0000 (16:14 +0000)]
1.0.37.54: more robust runtime executable path detection

 Patch by Josh Elsasser.

 * os_get_runtime_executable_path() extended with an argument to
   indicate if the returned path should be externally usable (which
   precludes paths such as /proc/curproc/file).

 * If os_get_runtime_executable_path() fails, use an argv[0] derived
   path instead.

 * Check build_id when saving executable cores to make sure we got
   the right runtime -- since using the argv[0] method can otherwise
   go wrong once in a blue moon.

 Fixes Launchpad #375549.

14 years ago1.0.37.53: missing NEWS from 1.0.37.52
Nikodemus Siivola [Wed, 7 Apr 2010 15:27:38 +0000 (15:27 +0000)]
1.0.37.53: missing NEWS from 1.0.37.52

14 years ago1.0.37.52: better MAKE-HASH-TABLE :WEAKNESS documentation
Nikodemus Siivola [Wed, 7 Apr 2010 15:24:54 +0000 (15:24 +0000)]
1.0.37.52: better MAKE-HASH-TABLE :WEAKNESS documentation

 Thanks to Attila Lendvai and Nathan Froyd.

14 years ago1.0.37.51: make SB-INTROSPECT build on PPC/GENCGC, hopefully
Nikodemus Siivola [Wed, 7 Apr 2010 14:56:16 +0000 (14:56 +0000)]
1.0.37.51: make SB-INTROSPECT build on PPC/GENCGC, hopefully

 ...by skipping the test which is too hard on the flaky combination.

 I'm really no enthused about purporting to support GENCGC on PPC,
 when we know it's flaky, but we don't have resources to fix it. :/

14 years ago1.0.37.50: check for unbound FORMAT-CONTROL for SIMPLE-CONDITIONs
Nikodemus Siivola [Wed, 7 Apr 2010 14:38:02 +0000 (14:38 +0000)]
1.0.37.50: check for unbound FORMAT-CONTROL for SIMPLE-CONDITIONs

 ...in the default PRINT-OBJECT method.

14 years ago1.0.37.49: add :ABORT to SOCKET-CLOSE
Nikodemus Siivola [Wed, 7 Apr 2010 13:31:34 +0000 (13:31 +0000)]
1.0.37.49: add :ABORT to SOCKET-CLOSE

 Also take care not to disassociate the stream from the socket if the
 close fails.

 Fixed launchpad bug #543951.

14 years ago1.0.37.48: nicer *PRINT-ESCAPE* printout for SIMPLE-CONDITIONs
Nikodemus Siivola [Wed, 7 Apr 2010 13:15:13 +0000 (13:15 +0000)]
1.0.37.48: nicer *PRINT-ESCAPE* printout for SIMPLE-CONDITIONs

 ...which is to say print the format control string to make them more
 identifiable form the escaped output.

14 years ago1.0.37.47: less pain for building threads on Darwin
Nikodemus Siivola [Wed, 7 Apr 2010 11:58:59 +0000 (11:58 +0000)]
1.0.37.47: less pain for building threads on Darwin

 * Use RUN-PROGRAM for impure tests everywhere. Not only is it better
   to use the more-portable solution everywhere, we had a huge number
   of bogus failures on thread tests on Darwin due to interactions
   between fork() and thread stack cleanup.

   Addresses Launchpad bug #310208.

 * Make tests depending on mutex timeout punt on lutex platform, and
   make several test which are prone hang or crash into LDB punt on
   Darwin. ("Punt" here means "call ERROR" so we get a test failure.)

 * Disable mailbox tests prone to hang on Darwin.

 ...so building threads on Darwin means one actually has a prayer or
 running the tests with useful results -- and the failures are real
 Darwin problems.

14 years ago1.0.37.46: SB-POSIX build fix when :SB-DOC is not in features
Nikodemus Siivola [Wed, 7 Apr 2010 07:23:38 +0000 (07:23 +0000)]
1.0.37.46: SB-POSIX build fix when :SB-DOC is not in features

 * Even those who don't like documentation like working contribs:
   current SB-GROVEL design doesn't really work with #+sb-doc "doc"
   approach.

 Fixes launchpad bug #552564.

14 years ago1.0.37.45: Remove bogus test (:CONDITION-VARIABLE :WAIT-MULTIPLE).
Tobias C. Rittweiler [Wed, 7 Apr 2010 07:06:48 +0000 (07:06 +0000)]
1.0.37.45: Remove bogus test (:CONDITION-VARIABLE :WAIT-MULTIPLE).

  * The test was introduced in 1.0.26.4 to test against closely
    running waiters to cause spurious wakeups to each other.

    However, as has been shown in the thread "lost wakeup in
    condition-wait / condition-notify", feb 2010 on sbcl-devel, that
    optimization resulted in a possible lost wakeup case.

    1.0.37.34 contained a fix against that lost wakeup case but
    introduced back the pessimal behaviour of waiters interfering with
    each other.

    So the test was rendered bogus.

  * While I'm at it, also update NEWS to tag an entry with its LP#.

14 years ago1.0.37.44: FIND-PACKAGE and FIND-SYMBOL deadlocks
Nikodemus Siivola [Tue, 6 Apr 2010 15:11:02 +0000 (15:11 +0000)]
1.0.37.44: FIND-PACKAGE and FIND-SYMBOL deadlocks

 * Instead of linearizing purely on *PACKAGE-LOCK* split the
   responsibilities:

     1) *PACKAGE-GRAPH-LOCK* is responsible for package->package
     links, and package->symbol links.

     2) The hash-table lock on *PACKAGE-NAMES* is responsible for
     string->package associations. (%NAME and %NICKNAMES slots of
     package objects and the hash-table itself.)

   This is enough to allow FIND-SYMBOL and FIND-PACKAGE to always
   complete in finite time. INTERN, etc, can still block if eg.  the
   *PACKAGE-GRAPH-LOCK* is held by a thread waiting for the debugger,
   etc -- but the reader is at least able to read existing symbols.

 * Additionally, in cases where it is easy, signal some errors while
   *PACKAGE-GRAPH-LOCK* is not held.

14 years ago1.0.37.43: add RAW-INSTANCE-INIT/* VOPs for PPC
Nathan Froyd [Tue, 6 Apr 2010 14:32:42 +0000 (14:32 +0000)]
1.0.37.43: add RAW-INSTANCE-INIT/* VOPs for PPC

14 years ago1.0.37.42: Add DEFKNOWN for %FAILED-AVER...
Tobias C. Rittweiler [Tue, 6 Apr 2010 12:43:56 +0000 (12:43 +0000)]
1.0.37.42: Add DEFKNOWN for %FAILED-AVER...

..so the compiler knows that it won't return.

14 years ago1.0.37.41: Improved ASSERT-NO-CONSING reporting in test suite.
Tobias C. Rittweiler [Tue, 6 Apr 2010 11:09:31 +0000 (11:09 +0000)]
1.0.37.41: Improved ASSERT-NO-CONSING reporting in test suite.

An hooray to FORMAT:

  (assert-no-consing (sleep 0.0001)) results in

      Expected the form
          (SLEEP 1.e-4)
      NOT to cons, yet running it for 10000 times resulted in the
      allocation of 1290440 bytes (129.044 per run).

14 years ago1.0.37.40: More informative UNEXPECTED-FAILURE reporting...
Tobias C. Rittweiler [Tue, 6 Apr 2010 10:07:22 +0000 (10:07 +0000)]
1.0.37.40: More informative UNEXPECTED-FAILURE reporting...

..by making it report the actual error message as well.

14 years ago1.0.37.39: Use WITH-TEST consistently in dynamic-extent.impure.lisp.
Tobias C. Rittweiler [Tue, 6 Apr 2010 10:04:29 +0000 (10:04 +0000)]
1.0.37.39: Use WITH-TEST consistently in dynamic-extent.impure.lisp.

14 years ago1.0.37.38: micro-optimizations of CONCATENATE bits
Nathan Froyd [Mon, 5 Apr 2010 20:04:19 +0000 (20:04 +0000)]
1.0.37.38: micro-optimizations of CONCATENATE bits

- Don't insert array bounds checks when inlining CONCATENATE.  This
  particularly helps when smushing together constant strings.

- Don't insert array bounds checks in the out-of-line CONCATENATE functions.

- While we're here, tweak the REPLACE transforms to avoid bounds checking
  under appropriate policy.

14 years ago1.0.37.37: fix CONCATENATE FIXME
Nathan Froyd [Mon, 5 Apr 2010 13:03:03 +0000 (13:03 +0000)]
1.0.37.37: fix CONCATENATE FIXME

Collapse helper macros and functions into CONCATENATE as simple FLETs,
reducing noise and providing a marginally more efficient CONCATENATE, since
we're no longer APPLY'ing and &RESTing lists unnecessarily.

14 years ago1.0.37.36: revisit FIND/POSITION bounds checking on lists
Nikodemus Siivola [Sun, 4 Apr 2010 09:03:08 +0000 (09:03 +0000)]
1.0.37.36: revisit FIND/POSITION bounds checking on lists

  The spec doesn't actually /require/ us to signal an error if we
  are not in danger of running out of bounds as far as I can tell.

  So don't traverse the entire list during forward searches if we
  find what we are looking for before specified :END or the list end.

  Patch by Alec Berryman.

  This revisits lp#452008, and fixed lp#554385.

14 years ago1.0.37.35: Rename WAITQUEUE-DATA to WAITQUEUE-TOKEN.
Tobias C. Rittweiler [Sat, 3 Apr 2010 19:56:28 +0000 (19:56 +0000)]
1.0.37.35: Rename WAITQUEUE-DATA to WAITQUEUE-TOKEN.

Naming it that way makes more sense because the slot's value is used
as token. It's also easier to refer to a waitqueue's token rather than
a waitqueue's datum in discussions.

14 years ago1.0.37.34: Fix lost wakeup bug between CONDITION-WAIT and CONDITION-NOTIFY.
Tobias C. Rittweiler [Sat, 3 Apr 2010 18:06:37 +0000 (18:06 +0000)]
1.0.37.34: Fix lost wakeup bug between CONDITION-WAIT and CONDITION-NOTIFY.

(Patch and write up below are actually due to Nikodemus.)

Use the waitqueue object as the data item in CONDITION-NOTIFY, and the
thread in CONDITION-WAIT.

It doesn't matter if multiple notifies use the same object -- single
thread notifying multiple times has the same meaning as multiple
threads sending one notification each, but multiple waiters must use
different objects as per following scenario:

   1) Thread A calls CONDITION-WAIT on a condition variable CVAR.

      Thread A sets CVAR's waitqueue-data to token A.

      Thread A is preempted after the (RELEASE-MUTEX), before the
      FUTEX-WAIT.

   2) Thread B is run. Thread B invokes CONDITION-NOTIFY.

      Thread B sets CVAR's waitqueue-data to a token B.

      Thread B invokes FUTEX-WAKE which is NO-OP because no thread is
      yet waiting on the futex.

   3) Thread C is run. Thread C invokes CONDITION-WAIT.

      Thread C sets CVAR's waitqueue-data to token C.

   4) Thread A is finally run again. The call to FUTEX-WAIT compares
      CVAR's waitqueue-data with token A. If token A == token C, the
      wakeup is lost.

Similarly, if step 3 does not happen, and token A == token B, the
wakeup is lost.

Furthermore, consider if thread A == thread B, and step 3 does not
happen.  (This can occur due to an interrupt.) Hence CONDITION-NOTIFY
cannot use the thread object as the token.

14 years ago1.0.37.33: Add SB-THREAD:GRAB-MUTEX.
Tobias C. Rittweiler [Sat, 3 Apr 2010 16:46:04 +0000 (16:46 +0000)]
1.0.37.33: Add SB-THREAD:GRAB-MUTEX.

  * I unintentionally comitted the bulk of what was supposed to become
    this commit with 1.0.37.31. Sorry.

  * SB-THREAD:GRAB-MUTEX is like GET-MUTEX except it takes &key, not
    &optional parameters.

  * Also add a :TIMEOUT key parameter on non-lutex platforms.

  * Tests included. News updated. Phew.

14 years ago1.0.37.32: Adapt test :GC-DEADLOCK due to 1.0.37.30.
Tobias C. Rittweiler [Sat, 3 Apr 2010 14:57:14 +0000 (14:57 +0000)]
1.0.37.32: Adapt test :GC-DEADLOCK due to 1.0.37.30.

14 years ago1.0.37.31: Use (WITH-TEST ...) consistently in threads.impure.lisp.
Tobias C. Rittweiler [Sat, 3 Apr 2010 14:55:37 +0000 (14:55 +0000)]
1.0.37.31: Use (WITH-TEST ...) consistently in threads.impure.lisp.

14 years ago1.0.37.30: OAOOize type of NAME slots between THREAD, MUTEX &c.
Tobias C. Rittweiler [Sat, 3 Apr 2010 13:25:34 +0000 (13:25 +0000)]
1.0.37.30: OAOOize type of NAME slots between THREAD, MUTEX &c.

  * Introduce new type THREAD-NAME; it expands to SIMPLE-STRING for
    now; that's what some of the thread-related data structures
    (MUTEX, WAITQUEUE) used in past whereas others allowed anything
    (THREAD).

  * Use that type consistently for THREADs, MUTEXes, WAITQUEUES,
    SPINLOCKs and SEMAPHOREs.

14 years ago1.0.37.29: Cleanup from fasl format and fasdump logic changes.
Alastair Bridgewater [Sat, 3 Apr 2010 00:42:24 +0000 (00:42 +0000)]
1.0.37.29: Cleanup from fasl format and fasdump logic changes.

  * Bump fasl format version.

  * Remove fop-normal-load and fop-maybe-cold-load now that they're not
used.

  * Remove *cold-load-dump* logic, now that it's not used.

  * Remove various fop-normal-load-related logic from genesis.