Christophe Rhodes [Wed, 30 Jun 2010 21:36:22 +0000 (21:36 +0000)]
1.0.40: will be tagged as sbcl_1_0_40
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.
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.
Cyrus Harmon [Sat, 26 Jun 2010 05:03:58 +0000 (05:03 +0000)]
1.0.39.22: "upgrade" to ASDF 2.003
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
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 "...")
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 ...)
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).
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.
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
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.
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.
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.
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
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.
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)
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
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.
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.
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.
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).
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.
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
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
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.
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.
Christophe Rhodes [Sat, 29 May 2010 19:33:42 +0000 (19:33 +0000)]
1.0.39: will be tagged as sbcl_1_0_39
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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).
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.
Christophe Rhodes [Fri, 30 Apr 2010 15:42:46 +0000 (15:42 +0000)]
1.0.38: will be tagged as sbcl_1_0_38
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.
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
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.
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)
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.
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.
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.
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.
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...
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.
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
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.
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.
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.
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.
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.
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.
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.
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...
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.
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.
Nikodemus Siivola [Wed, 7 Apr 2010 15:27:38 +0000 (15:27 +0000)]
1.0.37.53: missing NEWS from 1.0.37.52
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.
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. :/
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.
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.
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.
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.
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.
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#.
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.
Nathan Froyd [Tue, 6 Apr 2010 14:32:42 +0000 (14:32 +0000)]
1.0.37.43: add RAW-INSTANCE-INIT/* VOPs for PPC
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.
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).
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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)
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.
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.
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.
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.
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
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.
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.