sbcl.git
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.

13 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

13 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

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

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

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

14 years ago1.0.37.28: Remove fop-normal-load games when dumping stuff.
Alastair Bridgewater [Sat, 3 Apr 2010 00:41:50 +0000 (00:41 +0000)]
1.0.37.28: Remove fop-normal-load games when dumping stuff.

  * Layouts, fixup-kinds, and assembly-routine names are named by
interned symbols, which genesis now knows how to read with cold-fops.

14 years ago1.0.37.27: Add new named-package FOPs for simpler package fasdumping.
Alastair Bridgewater [Sat, 3 Apr 2010 00:41:04 +0000 (00:41 +0000)]
1.0.37.27: Add new named-package FOPs for simpler package fasdumping.

 * A new cloned-fop pair, fop-named-package-save and
fop-small-named-package-save, taking an inlined string and doing the
package lookup, save to fasl-table, etc.

 * Defined in genesis as new clone-cold-fop pair, as genesis needs host
package objects in its fasl table.

 * Package references now dumped using the new fop pair, instead of
faffing about with switching between cold and normal loads, dumping the
package name, dumping a fop-package and dumping fop-pop.

 * Old fop-package retained for use by the fopcompiler.

14 years ago1.0.37.26: Remove FASL-DUMP-COLD-LOAD-FORM and its one use.
Alastair Bridgewater [Sat, 3 Apr 2010 00:40:26 +0000 (00:40 +0000)]
1.0.37.26: Remove FASL-DUMP-COLD-LOAD-FORM and its one use.

  * Used in one place, when doing the assembly pass over the
assembly-routine source, to dump an in-package form.

  * Said in-package form is useless, as symbols are only ever dumped in
relation to an explicit home package, not the current package.

14 years ago1.0.37.25: Defer interning symbols to cold-core as long as possible.
Alastair Bridgewater [Sat, 3 Apr 2010 00:39:25 +0000 (00:39 +0000)]
1.0.37.25: Defer interning symbols to cold-core as long as possible.

 * Don't cold-intern symbols in cold-load-symbol.

 * Use host symbols NIL and T for fop-empty-list and fop-truth.

 * Do cold-intern symbols-as-value in write-wordindexed.

 * Warm-fun-name of a symbol is the symbol itself, modulo uncrossing
packages (SB-XC -> COMMON-LISP).

 * Type declaration fixups to allow passing symbols as well as
descriptors in some places.

14 years ago1.0.37.24: Genesis deFIXMEification: Symbol allocation gspace.
Alastair Bridgewater [Sat, 3 Apr 2010 00:38:18 +0000 (00:38 +0000)]
1.0.37.24: Genesis deFIXMEification: Symbol allocation gspace.

  * Removed *cold-symbol-allocation-gspace*

  * Added keyword argument for allocation gspace to allocate-symbol.

  * Added keyword argument for allocation space to cold-intern, changing
optional package argument to be a keyword argument as well.

  * Changed initialize-non-nil-symbols to pass explicit gspace arguments
to cold-intern instead of using *cold-symbol-allocation-gspace*.

  * Fixed the one use of the package argument to cold-intern for the
keyword-argument version.

14 years ago1.0.37.23: saner SB-PROFILE::COUNTER-COUNT handling
Nikodemus Siivola [Fri, 2 Apr 2010 15:34:56 +0000 (15:34 +0000)]
1.0.37.23: saner SB-PROFILE::COUNTER-COUNT handling

 * Each overflow accounts for (1+ +MOST-POSITIVE-WORD+) instead of
   +MOST-POSITIVE-WORD+, just like in

     0x01 + [0x00,0xff] = [0x01,0x00]

   ...one less ATOMIC-INCF needed for the overflow case.

14 years ago1.0.37.22: SB-PROFILE improvements
Nikodemus Siivola [Thu, 1 Apr 2010 17:36:02 +0000 (17:36 +0000)]
1.0.37.22: SB-PROFILE improvements

 * More efficient counters: use CAS to increment the overflow, no need
   for a separate spinlock.

 * Current off-by-one in the event of counter-overflows.

 * Report per-function GC overhead. (patch by John Fremlin)

14 years ago1.0.37.21: :AUTO-CLOSE and better FD-STREAM-NAME for socket streams
Nikodemus Siivola [Thu, 1 Apr 2010 12:52:04 +0000 (12:52 +0000)]
1.0.37.21: :AUTO-CLOSE and better FD-STREAM-NAME for socket streams

 Fixed launchpad bug #540413.

14 years ago1.0.37.20: Make stress test for SB-CONCURRENCY:MAILBOX more robust.
Tobias C. Rittweiler [Wed, 31 Mar 2010 19:35:11 +0000 (19:35 +0000)]
1.0.37.20: Make stress test for SB-CONCURRENCY:MAILBOX more robust.

  * The MAILBOX.INTERRUPT-SAFETY.1 test kills threads randomly while
    stress-testing a mailbox--in the test we made sure that at least
    one receiver remains to properly finish the test; however, some of
    the receiver threads were written with a specific upper bound of
    runs. In the unlikely event that only those receivers remain,
    there was a chance that they could not properly finish the test.

  * We rewrite the receivers to do their work until they receive a
    special FIN token as message. After all senders are done, we make
    sure to send enough FIN for all receivers to shut down.

  * Also gather some more information during the test so in case of
    failure we can gain understanding on what went wrong.

14 years ago1.0.37.19: Forgot to add sb-queue/package.lisp in last commit.
Tobias C. Rittweiler [Tue, 30 Mar 2010 21:40:39 +0000 (21:40 +0000)]
1.0.37.19: Forgot to add sb-queue/package.lisp in last commit.

14 years agostill 1.0.38.18; forgot to delete old sb-queue files.
Tobias C. Rittweiler [Tue, 30 Mar 2010 10:48:08 +0000 (10:48 +0000)]
still 1.0.38.18; forgot to delete old sb-queue files.

14 years ago1.0.37.18: New contrib SB-CONCURRENCY.
Tobias C. Rittweiler [Tue, 30 Mar 2010 10:46:43 +0000 (10:46 +0000)]
1.0.37.18: New contrib SB-CONCURRENCY.

sb-concurrency related changes:

  * create contrib/sb-concurrency/

  * add the implementation of lock-free Queues from sb-queue.

  * add a new implementation of Mailboxes on top of the Queues.

sb-queue related changes:

  * merged into sb-concurrency

  * deprecated now, but the system / package is still retained for
    backwards compatibility; the package simply reexports from
    sb-concurrency.

doc changes:

  * add section for sb-concurrency to manual

14 years ago1.0.37.17: multiplication-by-one misoptimization in (FLOAT-ACCURACY 0) policies
Nikodemus Siivola [Tue, 30 Mar 2010 10:09:04 +0000 (10:09 +0000)]
1.0.37.17: multiplication-by-one misoptimization in (FLOAT-ACCURACY 0) policies

 * Our transforms optimized (* <int> 1.0) into <int>. Oops.

14 years ago1.0.37.16: fix build
Nikodemus Siivola [Mon, 29 Mar 2010 15:31:25 +0000 (15:31 +0000)]
1.0.37.16: fix build

 * Oops. Missing package prefixes and wrong slot type
   for SEMAPHORE-WAITCOUNT.

14 years ago1.0.37.15: Make SB-THREAD:TRY-SEMAPHORE decrement count by N.
Tobias C. Rittweiler [Mon, 29 Mar 2010 10:54:08 +0000 (10:54 +0000)]
1.0.37.15: Make SB-THREAD:TRY-SEMAPHORE decrement count by N.

Add an &optional N parameter to SB-THREAD:TRY-SEMAPHORE as an
optimization so a user who wants to do so does not need to
acquire a semaphore's lock multiple times but just once.

14 years ago1.0.37.14: fix the other half of the WAIT-ON-SEMAPHORE buglet
Nikodemus Siivola [Mon, 29 Mar 2010 08:05:11 +0000 (08:05 +0000)]
1.0.37.14: fix the other half of the WAIT-ON-SEMAPHORE buglet

 * ATOMIC-DECF doesn't do any good if the other write isn't atomic as
   well: even though we are always holding the lock while incrementing
   the waitcount, the possibly unlocked but atomic decrement means the
   increment needs to be atomic too.

14 years ago1.0.37.13: Make SIGNAL-SEMAPHORE interruptable.
Tobias C. Rittweiler [Sun, 28 Mar 2010 20:08:38 +0000 (20:08 +0000)]
1.0.37.13: Make SIGNAL-SEMAPHORE interruptable.

Although a SEMAPHORE's mutex is private to that SEMAPHORE, and the
mutex is released during the wait in WAIT-ON-SEMAPHORE, it's still
possible to starve in SIGNAL-SEMAPHORE while waiting to acquire the
mutex because a deadline handler around WAIT-ON-SEMAPHORE could be
running in the implicitly called CONDITION-WAIT which reacquires the
mutex.

Hence make sure that the call to GET-MUTEX in SIGNAL-SEMAPHORE is
interruptable.

14 years ago1.0.37.12: Fix typo in "Reporting bugs" section of the manual.
Tobias C. Rittweiler [Sun, 28 Mar 2010 17:44:49 +0000 (17:44 +0000)]
1.0.37.12: Fix typo in "Reporting bugs" section of the manual.

  s/call_backtrace_from_fp/call backtrace_from_fp/

  fixes lp#541771

  (The last commit message contained a bogus commit version header
   of "1.0.37.6"; it was "1.0.37.11", of course.)