Nikodemus Siivola [Thu, 30 Sep 2010 08:34:41 +0000 (08:34 +0000)]
1.0.43.9: .cvsignore contrib/test-passed
...for the benefit of those still using the CVS. :)
Fixes lp#650558.
Nikodemus Siivola [Thu, 30 Sep 2010 08:33:40 +0000 (08:33 +0000)]
1.0.43.8: ALLOCATION-INFORMATION also provides the actual page
Important for figuring out why garbage is retained and why a page
keeps getting dirty.
Nikodemus Siivola [Thu, 30 Sep 2010 08:25:49 +0000 (08:25 +0000)]
1.0.43.7: update expected test failures on Darwin/x86-64
Bunch of tests in debug.impure.lisp have been passing for a while
now.
Missing NEWS entry for last commit.
Nikodemus Siivola [Thu, 30 Sep 2010 08:23:34 +0000 (08:23 +0000)]
1.0.43.6: fix overeager input-buffer filling by external-format routines
Fixes lp#643686.
Previously the character-input functions returned only after filling the
entire request by fast-read-char-refill, or if an EOF was reached.
This meant that on a pipe we would not receive any input until there
was a buffer's worth of it, or the other end closed.
Not so good. New the drill is:
0, N characters requested.
1. Decode upto N characters from binary buffer to the character
buffer.
2. If any characters were decoded or at EOF, return.
3. Otherwise refill the binary buffer with at most one read()
and goto 1.
Previously at #1 we returned only if the entire request was
satisfied.
Nikodemus Siivola [Thu, 30 Sep 2010 08:21:22 +0000 (08:21 +0000)]
1.0.43.5: add :EXTERNAL-FORMAT argument to RUN-PROGRAM
Selects the encoding for :INPUT, :OUTPUT, and :ERROR :STREAMs.
Nikodemus Siivola [Thu, 30 Sep 2010 07:38:07 +0000 (07:38 +0000)]
1.0.43.4: deal with interrupted open(2) calls
Particularly if the other end is a FIFO, it isn't all that
hard to get interrupted before open() completes.
Nikodemus Siivola [Thu, 30 Sep 2010 07:15:57 +0000 (07:15 +0000)]
1.0.43.3: make (LOAD-TIME-VALUE (THE (VALUES FIXNUM) 42)) work again
An explicit THE + VALUES broke LOAD-TIME-VALUE.
FIxes lp#646796.
Nikodemus Siivola [Thu, 30 Sep 2010 07:12:47 +0000 (07:12 +0000)]
1.0.43.2: remove bashishm from source-distribution.sh
Thanks to Jim Wise, lp#644702.
Nikodemus Siivola [Thu, 30 Sep 2010 07:03:25 +0000 (07:03 +0000)]
1.0.43.1: better handling of complex array types in fill-pointer ops
Derive the fact that the result of MAKE-ARRAY is (NOT SIMPLE-ARRAY)
when possible.
Instead of DEFOPTIMIZERs asserting that various functions need a
complex array, put the right type in the DEFKNOWNs instead.
Also remove a few of redundant typechecks: FILL-POINTER ->
ARRAY-HAS-FILL-POINTER call path does all the checks any of the other
operations need.
Fixes lp#309130.
Juho Snellman [Thu, 30 Sep 2010 01:07:36 +0000 (01:07 +0000)]
1.0.43: will be tagged as sbcl_1_0_43
Juho Snellman [Mon, 27 Sep 2010 23:42:11 +0000 (23:42 +0000)]
1.0.42.54: #!+darwin the nanosleep hack
* At least on linux the the output value of nanosleep can drift
up a little bit compared to the input. Combined with the hack
for the darwin nanosleep problems, this caused early exits
from SLEEP.
Nikodemus Siivola [Mon, 27 Sep 2010 15:17:08 +0000 (15:17 +0000)]
1.0.42.53: *TTY* stream needs to serve events as well
Regression from 1.0.42.43.
Nikodemus Siivola [Tue, 21 Sep 2010 16:47:21 +0000 (16:47 +0000)]
1.0.42.52: fix Windows build
Kludge around FD_SETSIZE on Windows.
Nikodemus Siivola [Tue, 21 Sep 2010 15:29:10 +0000 (15:29 +0000)]
1.0.42.51: disable split html manual building
Makeinfo tries to generate an overly long filename for one of the
split parts (SB-BSD-SOCKETS:SOCKET-MAKE-STREAM, to be exact),
breaking the documentation build.
Fixes lp#643636. Regression since 1.0.42.
Nikodemus Siivola [Tue, 21 Sep 2010 13:10:37 +0000 (13:10 +0000)]
1.0.42.50: workaround a Darwin nanosleep() bug
Fixes lp#640516.
It turns out that on Darwin, if a nanosleep() call is interrupted,
and the signal handler takes longer than the requested sleep time
was, then the call will return with EINTR and (unsigned)-1 in the
remaining seconds.
Since we call nanosleep() again when it returns with EINTR with the
remaining time, this would cause us to sleep ~136 years...
So, check that the remainder is not increasing before calling
nanosleep() again.
Many, many thanks to Joe Lobraco who reported and diagnosed the
issue.
Nikodemus Siivola [Tue, 21 Sep 2010 11:23:32 +0000 (11:23 +0000)]
1.0.42.49: fix (SETF DOCUMENTATION) for macros
Fixes lp#643958.
Patch Stas Boukarev, test-case by yours truly.
Nice and simple, so going in mid-freeze.
Nikodemus Siivola [Mon, 20 Sep 2010 08:24:50 +0000 (08:24 +0000)]
1.0.42.48: more contextual CAREFUL-EXPAND-MACRO messages
Differentiate between compiler-macroexpansion and macroexpansion in
the warning messages.
Nikodemus Siivola [Mon, 20 Sep 2010 08:23:52 +0000 (08:23 +0000)]
1.0.42.47: fix regressions from 1.0.42.46.
...need to learn read the test suite output properly...
Nikodemus Siivola [Mon, 20 Sep 2010 07:33:24 +0000 (07:33 +0000)]
1.0.42.46: style-warn users about READ-FROM-STRING &optional gotcha
Check -- at runtime if need be! -- if the EOF-ERROR-P argument to
READ-FROM-STRING is one of its keyword arguments, and signal a
style-warning explaining the issue if so,
Since the runtime check surprisingly has a measurable cost, add a
compiler-macro that
* signals the style-warning at compile-time.
* rewrites the call into required-args-only form.
Which actually nets us a 2% speedup... perhaps we should consider
more widespread rewriting of &KEY calls into required-args-only form.
Nikodemus Siivola [Sun, 19 Sep 2010 21:33:31 +0000 (21:33 +0000)]
1.0.42.45: more descriptive errors for exceeding FD_SETSIZE
Instead of a type-error whose meaning is pretty opaque to an average
user, signal an error with a descriptive message.
Add bug numbers to the previous select()/poll() changes in NEWS.
Nikodemus Siivola [Sun, 19 Sep 2010 20:11:58 +0000 (20:11 +0000)]
1.0.42.44: oops, this bit was not supposed to go in...
Nikodemus Siivola [Sun, 19 Sep 2010 20:08:47 +0000 (20:08 +0000)]
1.0.42.43: FD-STREAMS no longer hook into SERVE-EVENT by default
* SOCKET-MAKE-STREAM, and MAKE-FD-STREAM have new keyword
argument :SERVE-EVENTS which requests that blocking IO on the
stream should dispatch to SERVE-EVENT. For SOCKET-MAKE-STREAM the
default is T, for MAKE-FD-STREAM the default it NIL.
* Don't call SYSREAD-MAY-BLOCK-P at all unless we need to to handle
events or check for timeout.
* Make WAIT-UNTIL-FD-USABLE use UNIX-SIMPLE-POLL instead of going
into SUB-SERVE-EVENT when appropriate:
** Explicit requests to not serve events.
** Timeout 0.
** No other handlers and no periodic polling function.
* When FD-STREAM-SERVE-EVENTS is false but write returns EWOULDBLOCK,
don't queue output but wait till poll(2) says we can go.
* UNIX-SIMPLE-POLL uses poll() only on platforms where a build-time
test shows it to exist and work as expected. Elsewhere it is built
on top of good 'ol select().
Nikodemus Siivola [Sun, 19 Sep 2010 19:09:21 +0000 (19:09 +0000)]
1.0.42.42: hack around *AUTO-EVAL-IN-FRAME* issues
When frame doesn't have sufficient debug information and
*AUTO-EVAL-IN-FRAME* is true -- the default -- the debugger REPL
becomes useless in the frame. Oops.
So, in those cases punt to regular EVAL instead -- which is the right
thing most of the time. To avoid confusion by DWIM, tell the user
when punting to global context.
Nikodemus Siivola [Sun, 19 Sep 2010 14:14:15 +0000 (14:14 +0000)]
1.0.42.41: use poll(2) instead of select(2) in SYSREAD-MAY-BLOCK-P
Calling select() with a single FD is just waste.
This also means that we don't use select() outside of serve-event,
paving way to having more fds open than FD_SETSIZE allows.
Nikodemus Siivola [Sun, 19 Sep 2010 13:36:30 +0000 (13:36 +0000)]
1.0.42.40: replace hardcoded FD-SETSIZE with a groveled one
Nikodemus Siivola [Sun, 19 Sep 2010 13:07:37 +0000 (13:07 +0000)]
1.0.42.39: workaround for lp#308914
Detect and escape from endless loops in ORDER-UVL-SETS.
Nikodemus Siivola [Sun, 19 Sep 2010 12:41:58 +0000 (12:41 +0000)]
1.0.42.38: fix SB-INTROSPECT:VALID-FUNCTION-NAME-P docstring
lp#641896
Nikodemus Siivola [Mon, 13 Sep 2010 11:04:00 +0000 (11:04 +0000)]
1.0.42.37: use more NAMED-LAMBDAs in PCL generated code
Previously backtraces and profiles showed eg.
(LAMBDA (.ARG0. .ARG1. .ARG2.))
for effective method functions, and
(LAMBDA (VALUE))
for slot typechecking functions.
Use NAMED-LAMBDA to name these sensibly:
(DFUN <generic-function-name>)
(SLOT-TYPECHECK <class-name> <slot-name>)
Nathan Froyd [Fri, 10 Sep 2010 23:06:09 +0000 (23:06 +0000)]
1.0.42.36: micro-optimize x86 assembly comparison VOPs
No need to load the address of the assembly routine into a temporary
register, as we do on x86-64. We can jump to the address directly
with CALL.
Alastair Bridgewater [Wed, 8 Sep 2010 01:12:16 +0000 (01:12 +0000)]
1.0.42.35: tests: Update :fails-on clause for a test
* Test dynamic-extent.impure.lisp / BUG-586105 expects that both
lists and vectors can be stack-allocated, but not all platforms
support this. Fortunately, the platforms that do support it also
have a feature conditional for it. Added a :fails-on clause to
the test.
Alastair Bridgewater [Wed, 8 Sep 2010 01:04:41 +0000 (01:04 +0000)]
1.0.42.34: threads: Consolidate thread-specific static symbols
* The x86, x86-64 and ppc backends all had the same three static
symbols used for threading. Rather than having each backend add
the same symbols to the static symbol list, add them to the list
of common static symbols. In the unlikely(?) event that we commit
a threaded port to mainline that doesn't use these symbols, we can
revisit this change.
Alastair Bridgewater [Sun, 5 Sep 2010 17:01:01 +0000 (17:01 +0000)]
1.0.42.33: ppc: Improve pseudo-atomic implementation
* The runtime (ppc-assem.S) used a shorter, more concise
sequence of instructions for testing pseudo-atomic than the
compiler (ppc/macros.lisp) did. Altered the compiler to use
the same sequence as the runtime.
* Both the compiler and the runtime used magic numbers in the
pseudo-atomic sequence instead of using named constants.
Fixed, using the existing named constants.
Christophe Rhodes [Sat, 4 Sep 2010 08:01:27 +0000 (08:01 +0000)]
1.0.42.32: fix for lp#611361
Only omit IGNORE declarations for required method parameters, not all
parameters.
Nikodemus Siivola [Fri, 3 Sep 2010 13:28:34 +0000 (13:28 +0000)]
1.0.42.31: fix build with clisp 2.49
Patch by Josh Elsasser, lp#629144.
Previously, if a clisp 2.49 host was used, the build failed during
make-host-1 in src/code/cross-sap.lisp with several "redefining SETF
expander" errors. The same *suppress-check-redefinition* fix used in
make-host-2 is enough to placate clisp and allow the build to finish
successfully.
Nikodemus Siivola [Fri, 3 Sep 2010 13:24:49 +0000 (13:24 +0000)]
1.0.42.30: missing docstring for GET-PROTOCOL-BY-NAME
Patch by Jim Wise, lp#628885.
Nikodemus Siivola [Fri, 3 Sep 2010 13:21:57 +0000 (13:21 +0000)]
1.0.42.29: tweak run-program.impure.lisp
Make READ-LINEISH less bogus.
Fixes lp#628887, I hope.
Nikodemus Siivola [Fri, 3 Sep 2010 13:01:32 +0000 (13:01 +0000)]
1.0.42.28: package locks to guard against DEFMACRO -> DEFUN and vice-versa
* Fixes lp#576637.
* PROCLAIM-AS-FUN-NAME is called quite often at compile time, but actually
does something we care about only rarely -- assert the lock only when
something changes, so that
(WITHOUT-PACKAGE-LOCKS (DEFUN LOCKED:FOO ...))
keeps working for the common case.
* Similar logic in %DEFMACRO.
* Some tests adjusted.
Alastair Bridgewater [Fri, 3 Sep 2010 05:47:27 +0000 (05:47 +0000)]
1.0.42.27: cleanup: My last commit was supposed to be .27
* My export shell script had a bug, introduced during
refactoring, causing it to read the wrong version.lisp-expr
to determine the old version number, thus causing the
version number to not be incremented after the first commit
in the series. What I get for trying to be too clever.
* Updated version.lisp-expr, gave an explanatory comment
in the commit message (this commit message).
Alastair Bridgewater [Fri, 3 Sep 2010 00:32:49 +0000 (00:32 +0000)]
1.0.42.26: git: Add a couple of new patterns to .gitignore
* One or more tests tend to create .so files in the tests/
directory. Ignore "tests/*.so".
* The process of building the manual produces a couple of .html
files in the doc/manual/ directory. Ignore "doc/manual/*.html".
Alastair Bridgewater [Fri, 3 Sep 2010 00:26:50 +0000 (00:26 +0000)]
1.0.42.26: tests: Fix broken :fails-on clause for a dynamic-extent.impure test
* Test case dynamic-extent.impure.lisp / (:NO-CONSING
:HASH-TABLES) fails on threaded PPC targets, but because the
clause was not quoted, it evaluated to all threaded targets,
which was wrong. My mistake, too.
* Added NEWS entry forgotten in 1.0.42.23, also my mistake.
Nikodemus Siivola [Thu, 2 Sep 2010 14:33:05 +0000 (14:33 +0000)]
1.0.42.25: check parent-lambdas in defined-fun-functional
* Fixes lp#308951.
* REFERENCE-LEAF could gain access to a functional in a strange
lexenv using DEFINED-FUN-FUNCTIONAL, messing up access to bindings.
Don't return a functional if the current lexenvs parent-lambda chain
does not hold the parent of the functional.
Also provides a more elegant fix for MISC.320.
Nikodemus Siivola [Thu, 2 Sep 2010 08:14:31 +0000 (08:14 +0000)]
1.0.42.24: print symbols with fully qualified names in critical places
Patch by Attila Lendvai, lp#622789.
Less room for package confusion this way.
Alastair Bridgewater [Thu, 2 Sep 2010 00:34:28 +0000 (00:34 +0000)]
1.0.42.23: x86-64: Fix passing of unboxed complex float arguments.
* This has been broken since 1.0.27.14 (x86oid frame pointer
bias).
* The "move-arg" VOPs for complex floats required a different
adjustment when being placed relative to the normal frame base
pointer, due to the bias, than when being placed relative to
other base pointers. Unfortunately, a new requirement was also
added that restricted the appropriate registers for use as
frame base pointers to one, and one which would not normally be
selected, leading to "Unexpected offset" errors.
* Removed the restriction.
* The logic in EA-FOR-CXF-STACK is still broken: The frame bias
is only applied when the frame pointer is RSP, which will never
happen, and is not applied when the frame pointer is any other
register. At the same time, so far as I can tell, the bias seems
to be unneccessary.
* Bug reported by sykopomp in #lispgames.
Alastair Bridgewater [Thu, 2 Sep 2010 00:34:13 +0000 (00:34 +0000)]
1.0.42.22: x86-64: Add test case for unboxed complex float arguments.
* This has been broken since 1.0.27.14.
Nikodemus Siivola [Wed, 1 Sep 2010 18:11:09 +0000 (18:11 +0000)]
1.0.42.21: grab-bag of Solaris related fixes
Patch by Jim Wise, lp#627581.
* make make-doc.sh work on SunOS (due to old /bin/sh)
* avoid the struct dirent distrust-length build issue in sb-posix
* fix an issue in the run-program.ed test
* add .html to .cvsignore
Nikodemus Siivola [Wed, 1 Sep 2010 17:21:07 +0000 (17:21 +0000)]
1.0.42.20: use platform-dependent CFLAGS consistently in tests
Patch by Josh Elsasser, lp#615499.
In his words:
"Attached is a patch which moves all the duplicated, out-of-sync C
compiler flag selection in the tests into a single wrapper script.
When passed a flag like -sbcl-pic or -sbcl-shared, the script will
decided if -fPIC or -shared/-bundle is needed based on SOFTWARE-TYPE
and MACHINE-TYPE which SBCL has passed in the environment.
I tested this on several x86 OSes and a couple PowerPC, as well as
SunOS on SPARC and OpenBSD on x86-64. For the -sbcl-pic case I have
verified that -fPIC is needed on OpenBSD-PowerPC, OpenBSD-X86-64,
SunOS-SPARC and SunOS-X86; the other cases are guesses based on the
existing reader conditionals. It is not needed on Darwin or Linux on
PowerPC, or on any x86 OSes I tested aside from SunOS.
I haven't verified that -arch x86_64 is actually needed on
Darwin-X86-64, or that something like -m64 isn't needed on other
X86-64 OSes (aside from OpenBSD)."
Nikodemus Siivola [Wed, 1 Sep 2010 16:57:12 +0000 (16:57 +0000)]
1.0.42.19: make SB-CONCURRENCY more GC friendly
* Patch by "3b", lp#628098.
* Break chains of detached nodes, so conservativism won't kill us.
Nikodemus Siivola [Wed, 1 Sep 2010 16:09:24 +0000 (16:09 +0000)]
1.0.42.18: let's take that again
Previous commit was supposed to have this commit message:
"OpenBSD build fix -- signal handlers need to lead FPU control word"
* Patch by Josh Elsasser, lp#615492.
In his words:
OpenBSD/amd64 recently began running signal handlers with a clean
FPU state, making it necessary to load the floating point control
word. The attached patch does exactly this, and works equally well
on OpenBSD systems from both before and after the signal handler
change was made.
This patch is necessary to build SBCL x86-64 on recent -current
snapshots of OpenBSD, and for the upcoming 4.8 release.
* Committing untested, as I don't have OpenBSD handy.
Nikodemus Siivola [Wed, 1 Sep 2010 16:05:17 +0000 (16:05 +0000)]
1.0.42.17: better host lisp fasl-type logic
* Patch by Josh Elsasser, lp#615492.
In his words:
OpenBSD/amd64 recently began running signal handlers with a clean
FPU state, making it necessary to load the floating point control
word. The attached patch does exactly this, and works equally well
on OpenBSD systems from both before and after the signal handler
change was made.
This patch is necessary to build SBCL x86-64 on recent -current
snapshots of OpenBSD, and for the upcoming 4.8 release.
* Committing untested, as I don't have OpenBSD handy.
Nikodemus Siivola [Wed, 1 Sep 2010 15:46:18 +0000 (15:46 +0000)]
1.0.42.17: better host lisp fasl-type logic
* Patch by "nixeagle", lp#592903.
Use COMPILE-FILE-PATHNAME to figure out the right pathname-type.
Nikodemus Siivola [Wed, 1 Sep 2010 15:27:07 +0000 (15:27 +0000)]
1.0.42.16: better RANDOM type-error reporting
* Since RANDOM has an explicit check for the type, use the EXPLICIT-CHECK
flag in the DEFKNOWN...
* Patch by Stas Boukarev, lp#598986.
Nikodemus Siivola [Wed, 1 Sep 2010 14:42:09 +0000 (14:42 +0000)]
1.0.42.15: prevent inline expansion from creating refs to dead lambda-vars
* Fixes lp#454681.
* Patch by Alexey. In his words, in reference to the test-case:
(multiple-value-bind (iterator+977 getter+978)
(does-not-exist-but-does-not-matter)
(flet ((iterator+976 ()
(funcall iterator+977)))
(declare (inline iterator+976))
(let ((iterator+976 #'iterator+976))
(funcall iterator+976)))))
Inline expansion of ITERATOR+976 tries to refer to a dead
LAMBDA-VAR ITERATOR+977 of varargs entry, which was substituted
with ITERATOR+977 of &OPTIONAL processor. Thus the referenced
variable is dead and is not bound anywhere.
The attached patch fixes the problem by giving up on inline
expansion if it tries to make a reference to a dead LAMBDA-VAR,
similar to the way dead BLOCK tags are treated.
Nikodemus Siivola [Wed, 1 Sep 2010 14:14:55 +0000 (14:14 +0000)]
1.0.42.14: socket-connect thread safety, version 2
* Code from 1.0.40.7 to use getprotobyname_r.
* Use grovel-features.sh to check for its and getprotobynumber_r's
existence, and add feature :os-provides-getprotoby-r when so.
If they do not exist, use a lock instead.
Nikodemus Siivola [Wed, 1 Sep 2010 12:26:00 +0000 (12:26 +0000)]
1.0.42.13: update ASDF to 2.004
* Patch by Faré Rideau, lp#605260.
(Not quite as-is: I split the git scripting from the makefile into
pull-asdf.sh for clarity.)
Nikodemus Siivola [Wed, 1 Sep 2010 11:53:16 +0000 (11:53 +0000)]
1.0.42.11: reinline nested LIST and VECTOR calls in MAKE-ARRAY initial-contents
* Fixes lp#586105.
* The source transform for MAKE-ARRAY makes LIST and VECTOR notinline
so that the deftransforms can pick initial-contents and dimensions
apart.
However, when a list or vector in initial-contents is not part of
the initialization structure but an actual initialization value,
then notinline loses both performance in general, and foils nested
DX in particular.
So, walk the initial-contents and restore inlining for the actual
initialization values.
Nikodemus Siivola [Wed, 1 Sep 2010 09:15:14 +0000 (09:15 +0000)]
1.0.42.11: SB-EXT:WORD for use with ATOMIC-INCF &co
(Symbol previously known as SB-VM:WORD.)
* Requiring users to #+ their way to (UNSIGNED-BYTE 32) and 64 is
just mean and brittle.
Nikodemus Siivola [Tue, 31 Aug 2010 15:23:50 +0000 (15:23 +0000)]
1.0.42.10: guard against time travel by getrusage()
* Fixes lp#544421, we hope.
* Apparently sometimes getrusage() returns a smaller value on second
call -- this seems to happen under pretty extreme loads, mostly --
which we want to guard against.
Nikodemus Siivola [Tue, 31 Aug 2010 14:29:15 +0000 (14:29 +0000)]
1.0.42.9: fix defmethod declarations for aliases of builtin classes as specializers
* Fixes lp#618387.
* When we have a :defined class that we want a type declaration for, don't use
the name we used to look up the class, but the CLASS-NAME of the class.
Nikodemus Siivola [Tue, 31 Aug 2010 13:04:54 +0000 (13:04 +0000)]
1.0.42.8: fix build on OpenBSD/i386 -current and upcoming 4.8 release
* Patch by Josh Elsasser, lp#615489.
* On OpenBSD/i386, the structure that stores the FPU state during
signals was recently moved.
Add a script to tools-for-build/ which is run from make-config.sh
to detect where the FPU state is located, and create a
src/runtime/openbsd-sigcontext.h header containing a #define which
src/runtime/x86-bsd-os.c can use.
This is necessary to build SBCL on recent -current snapshots of
OpenBSD, and for the upcoming 4.8 release.
* Missing NEWS entry for last commit.
Nikodemus Siivola [Tue, 31 Aug 2010 12:46:41 +0000 (12:46 +0000)]
1.0.42.7: fix shell scripts on Solaris (and FreeBSD?)
* Patch by Josh Elsasser, lp#615497.
* Fixes for run-sbcl.sh and tests/subr.sh on Solaris, some of which I
believe were also necessary on FreeBSD.
* A missing #include needed on Solaris is also added.
Nikodemus Siivola [Tue, 31 Aug 2010 12:26:44 +0000 (12:26 +0000)]
1.0.42.6: fix os-provides-dladdr-test.c
For dladdr to be present in dlfcn.h, #define _GNU_SOURCE should be
before any includes.
Patch by Stas Boukarev.
Nikodemus Siivola [Tue, 31 Aug 2010 11:27:35 +0000 (11:27 +0000)]
1.0.42.5: revert 1.0.42.2, "correct defknown for data-vector-ref-with-offset"
Adjusting the defknown also requires adjusting the VOPs to accept negative
indexes, and since I don't have time right now to audit the sign handling
in them, I'm reverting for now.
Saga continues on https://bugs.launchpad.net/sbcl/+bug/622958
Nikodemus Siivola [Mon, 30 Aug 2010 15:06:46 +0000 (15:06 +0000)]
1.0.42.4: fix compiler-macros for WRITE and WRITE-TO-STRING
* Based on patch by Stas Boukarev, lp#598374 and lp#581564.
* Handle output-stream designators in WRITE.
* Avoid name capture in WRITE-TO-STRING.
Nikodemus Siivola [Mon, 30 Aug 2010 11:13:18 +0000 (11:13 +0000)]
1.0.42.3: DOTIMES and non-integer counts
* For non-literal non-integer counts we already did the right thing,
but eg. literal floats slipped under the radar.
* Patch by Roman Marynchak, lp#619393.
Nikodemus Siivola [Mon, 30 Aug 2010 10:44:59 +0000 (10:44 +0000)]
1.0.42.2: correct defknown for data-vector-ref-with-offset
* If the offset is positive, the index can be negative and still
correct.
* Fixes lp#622958
Christophe Rhodes [Sun, 29 Aug 2010 14:33:50 +0000 (14:33 +0000)]
1.0.42.1: add release script
The script automates many of the tasks involved in performing the minimum
level of sanity checking that I am comfortable with, and enumerates others
that remain unscriptable despite 10 years of user interface "improvements"
at Sourceforge. It is unlikely to generalise to other release managers'
setups and taste without a little effort.
Christophe Rhodes [Sun, 29 Aug 2010 14:13:26 +0000 (14:13 +0000)]
1.0.42: will be tagged as sbcl_1_0_42
Christophe Rhodes [Tue, 24 Aug 2010 16:27:02 +0000 (16:27 +0000)]
1.0.41.56: Fix for asdf-install (launchpad bug #612998)
Reported by Phil Hargett; patch by Jim Wise from Phil's description
Juho Snellman [Mon, 23 Aug 2010 23:21:27 +0000 (23:21 +0000)]
1.0.41.55: Solaris fixes
* Remove bashisms.
* Conditionalize out some constants and functions that
don't exist on Solaris.
* Patch from Jim Wise.
Nikodemus Siivola [Sat, 21 Aug 2010 09:41:15 +0000 (09:41 +0000)]
1.0.41.54: fix binary-distribution.sh for configurable prefixes
...that is, also include the file prefix.def, which specifies where
the system is configured to install. Now that I think of it, it might
be more elegant to be able to query the runtime about its default
SBCL_HOME, actually...
Thanks to Bruce O'Neel.
Nikodemus Siivola [Wed, 18 Aug 2010 14:56:59 +0000 (14:56 +0000)]
1.0.41.53: more make.sh tweakery, part N
Aka stuff that was supposed to be in .52, but got left out.
* Create output/ if necessary for saving the prefix.
* Put back the semicolon that fell on the floor and rolled into a corner.
Scripting is hard, dammit.
Nikodemus Siivola [Wed, 18 Aug 2010 14:49:27 +0000 (14:49 +0000)]
1.0.41.52: more make.sh tweakery
* Empty string as the value for an option is treated as if the option
wasn't provided at all, which makes scripting builds easier.
* Temporary support for legacy-style xc host specifications for the
benefit of clbuild &co. Add a noisy message to the end of the build
so people will hopefully notice.
Nikodemus Siivola [Tue, 17 Aug 2010 16:06:34 +0000 (16:06 +0000)]
1.0.41.51: eliminate accidental bash-ism from run-sbcl.sh
Thanks to Josh "Eagle Eye" Elsasser.
Nikodemus Siivola [Tue, 17 Aug 2010 12:26:24 +0000 (12:26 +0000)]
1.0.41.50: additional error checking for DEFTYPE &co
Based on patch by Roman Marynchak.
* Make PARSE-DEFMACRO check that the lambda-list is actually a list.
* Define BAD-TYPE as an utility to signal SIMPLE-TYPE-ERRORS, instead
of having to write the keyword calls everywhere.
* Fixes https://bugs.launchpad.net/sbcl/+bug/576594
Nikodemus Siivola [Tue, 17 Aug 2010 12:21:32 +0000 (12:21 +0000)]
1.0.41.49: comment on patch submission formats in STYLE
Also edit the prose from I -> we at least in a few places to
avoid confusion.
Nikodemus Siivola [Tue, 17 Aug 2010 11:35:24 +0000 (11:35 +0000)]
1.0.41.48: make run-sbcl.sh work on Darwin (and presumably other BSD-clones)
* BSD readlink doesn't support -f, fall back on dirname if readlink
didn't work.
Nikodemus Siivola [Mon, 16 Aug 2010 12:53:42 +0000 (12:53 +0000)]
1.0.41.47: (EXPT 0.0 0.0) and (EXPT 0 0.0) to signal an error
https://bugs.launchpad.net/sbcl/+bug/571581
From patch by Roman Marynchack.
Nikodemus Siivola [Mon, 16 Aug 2010 11:44:28 +0000 (11:44 +0000)]
1.0.41.46: further make.sh tweaks
* Remove OpenMCL and Clisp examples from make.sh help
string. Builders who need them should be able to figure them
out. From the SBCL and CMUCL examples, I think -- and this way they
won't go stale...
* Also check for empty arguments to --foo= style command line options.
Nikodemus Siivola [Sun, 15 Aug 2010 13:59:00 +0000 (13:59 +0000)]
1.0.41.45: make.sh command-line parsing
Based on patches by Daniel Herring:
* Simple --option and --option=arg command-line parser in make.sh.
* Supported options:
** --xc-host=<command> to specify XC host option instead of a
positional argument. (Incompatible change!)
** --prefix=<path> to specify a non-standard install location for
both build and install.sh.
Addresses https://bugs.launchpad.net/sbcl/+bug/550889
** --help
Semi-related minor cleanup:
* Use --no-userinit and --no-sysinit instead of version.lisp-expr as
the default inits for self-building: they have been around long
enough now that it should not stop anyone from building, and makes
for a somewhat less magical looking "//Build options: ..." line in
the build log.
Alastair Bridgewater [Wed, 11 Aug 2010 14:59:01 +0000 (14:59 +0000)]
1.0.41.44: runtime: Fix build on non-threaded x86oids.
* In 1.0.41.21, I accidentally broke non-threaded x86oid builds.
* Reported by Josh Elsasser and Bruce O'Neel with patches
provided, and Harald Hanche-Olsen without a patch.
* This fix based on the patch by Josh Elsasser.
Christophe Rhodes [Tue, 10 Aug 2010 10:59:04 +0000 (10:59 +0000)]
1.0.41.43: fix for RENAME-PACKAGE's return value
Patch from Eric Marsden (sbcl-devel 2010-07-26)
Alastair Bridgewater [Sun, 8 Aug 2010 01:14:39 +0000 (01:14 +0000)]
1.0.41.42: ppc: Documentation and NEWS updates for threading.
* Threading now officially experimentally supported on Linux/PPC.
* Added PPC Linux to the list of platforms with experimental
thread support in the INSTALL file and the manual.
* Updated NEWS.
Alastair Bridgewater [Sun, 8 Aug 2010 01:14:23 +0000 (01:14 +0000)]
1.0.41.41: tests: Fix tests for ppc-threading changes.
* The variable current_control_stack_pointer is no longer valid
on threaded targets. Substitute thread_control_stack_size, which
is valid on all targets, fixing alien.impure.lisp.
* Some dynamic-extent tests currently fail on threaded PPC.
Updated :fails-on information in dynamic-extent.impure.lisp.
* Test (:timer :parallel-unschedule) locked up my linux/ppc box
when running. Disabled, fixing timer.impure.lisp. Interestingly,
while the lockup in question killed the keyboard and the mouse,
briefly pressing the power button caused backlogged events to be
processed, and repeatedly pressing the power button eventually
unlocked the system completely.
* Test (:interrupt-thread :interrupt-consing-child :again) uses
sb-kernel:*pseudo-atomic-bits*, which is an x86oid-only symbol
(other ports use various parts of reg_ALLOC instead). Disabled the
test on non-x86oid ports, fixing threads.impure.lisp.
Alastair Bridgewater [Sun, 8 Aug 2010 01:14:04 +0000 (01:14 +0000)]
1.0.41.40: ppc: Shorten the gencgc allocation sequence.
* Rearrange the allocation sequence to avoid all branches,
relying on the runtime to manipulate the point at which
execution resumes from an allocation trap to compensate.
* Update the runtime to match the new allocation sequence.
* There is a further possible optimization here: The runtime
allocation trap handler can also accept an ADDI instruction
where the current sequence uses an ADD. In the case of a
fixed allocation size, this would save loading the temp
register with the size.
* Another optimization, along the same lines as the previous
one: With a fixed allocation size, adjusting the pointer to
point to the beginning of the data block and setting the lowtag
could be done in a single instruction.
* A third optimization, one which would entail modifying the
allocation trap handler slightly, and depends on at least the
first optimization above being in place: Once temp-tn is no
longer being used to hold the allocation size for fixed
allocations, it is available to hold the address of the
alloc region when threading is disabled, thus saving having to
reload it (two instructions).
Alastair Bridgewater [Sun, 8 Aug 2010 01:13:50 +0000 (01:13 +0000)]
1.0.41.39: ppc: Rename reg_L2 to reg_THREAD on threaded builds.
* This is largely to make the disassembly less confusing when it
refers to TLS slots and other per-thread data.
Alastair Bridgewater [Sun, 8 Aug 2010 01:13:36 +0000 (01:13 +0000)]
1.0.41.38: ppc: Runtime damage for threads.
* Call out to pthread_getspecific() from call_into_lisp in
order to obtain the TLS block for lisp operation.
* Tie together the runtime / gencgc version of pseudo-atomic
and the arch-specific / interrupt context version of pseudo-
atomic, to fulfill the requirements of the earlier pseudo-
atomic restructuring.
* Generally use the thread structure instead of global
variables where appropriate.
* Save our TLS block in the pthread per-thread storage area.
* SIG_STOP_FOR_GC appears to default to masked on PPC, so
unblock it in initial_thread_trampoline().
* Link with -lpthread when appropriate.
Alastair Bridgewater [Sun, 8 Aug 2010 01:13:20 +0000 (01:13 +0000)]
1.0.41.37: ppc: allocation fixes for threaded builds.
* Use the alloc region in the thread structure instead of the
global boxed_region.
Alastair Bridgewater [Sun, 8 Aug 2010 01:13:06 +0000 (01:13 +0000)]
1.0.41.36: ppc: Implement atomic-{incf,decf} as atomic operations.
* ATOMIC-INCF and ATOMIC-DECF require a VOP in order to serve as
actual atomic operations. This VOP is also required to serve as a
memory barrier. Implemented.
Alastair Bridgewater [Sun, 8 Aug 2010 01:12:49 +0000 (01:12 +0000)]
1.0.41.35: ppc: Implement compare-and-swap-vops.
* Based roughly on the x86-64 version and the differences
between x86oid define-full-reffer and the PPC use of VOPs
instead (the VOPs seem smart enough, why do x86oids do the
whole define-full-reffer / -c VOP thing?).
* Compare-and-swap VOPs are full memory barriers.
* Left the VOPs conditionally-compiled in based on the
compare-and-swap-vops feature, more as documentation of what
is involved than anything else.
* Enabled compare-and-swap-vops for all PPC targets.
Alastair Bridgewater [Sun, 8 Aug 2010 01:12:28 +0000 (01:12 +0000)]
1.0.41.34: ppc: Implement multithreaded symbol binding / unbinding.
* This is roughly based on the x86-64 version, but with TLS
allocation inline and synchronization made up with a copy of
"The PowerPC Architecture" in front of me.
* This does not have any check for TLS index overflow.
* Also implement the spinlock stuff used by the runtime to
do its TLS index allocation for dynamic binding.
Alastair Bridgewater [Sun, 8 Aug 2010 01:12:10 +0000 (01:12 +0000)]
1.0.41.33: ppc: Implement threaded symbol value accessors.
* Based on the x86-64 versions, again.
* This is just the accessors, not binding.
Alastair Bridgewater [Sun, 8 Aug 2010 01:11:55 +0000 (01:11 +0000)]
1.0.41.32: ppc: Random small threading bits.
* Thread-specific static symbols (these should probably be
moved to the list of common static symbols).
* The reader for random TLS data, current-thread-offset-sap.
* On threaded targets, stepping is controlled by a slot in the
thread structure, not by a static-symbol. Fixed.
* On non-threaded targets, don't hit the static-symbol value with
yet another ad-hoc method of calculating the address, use the
existing load-symbol-value macro.
Alastair Bridgewater [Sun, 8 Aug 2010 01:11:41 +0000 (01:11 +0000)]
1.0.41.31: ppc: Update backend to use TL symbol storage as appropriate.
* This turned out to be all of the uses of the original
-symbol-value access macros... And all to do with NLX, to two
symbols not tied to particular slots in the thread structure.
Alastair Bridgewater [Sun, 8 Aug 2010 01:11:27 +0000 (01:11 +0000)]
1.0.41.30: ppc: Add thread-local symbol-value accessor macros.
* This is basically a straight rip of the x86-64 version.
* These macros can only be used on static-symbols, so why
aren't we pre-allocating their TLS indices and making them
available at cross-compile time? If we did, we could elide
a temp register on stores and a memory read on all accesses.
Alastair Bridgewater [Sun, 8 Aug 2010 01:11:13 +0000 (01:11 +0000)]
1.0.41.29: ppc: Dedicate a register to the TLS-block on threaded builds.
* Swipe L2 for our TLS block.
* Set up a THREAD-BASE-TN while we're at it.
Alastair Bridgewater [Sat, 7 Aug 2010 15:23:10 +0000 (15:23 +0000)]
1.0.41.28: ppc: Fix race conditions in use of pseudo-atomic in ppc-assem.S.
* Originally, ppc-assem.S was saving the pseudo-atomic-interrupted
bit before clearing the pseduo-atomc-atomic bit in reg_ALLOC. This
introduces a single-instruction window wherein an interrupt could
occur, be deferred, and the setting of pseudo-atomic-interrupted be
ignored.
* Fixed, in the four places it occurs, by reordering instructions.
Alastair Bridgewater [Sat, 7 Aug 2010 15:22:58 +0000 (15:22 +0000)]
1.0.41.27: ppc: Calling convention fixes for assembly-routines calling static-funs.
* This is essentially the same as the static-fun VOP fixes from
earlier.
Alastair Bridgewater [Sat, 7 Aug 2010 15:21:54 +0000 (15:21 +0000)]
1.0.41.26: ppc: Calling-convention fixes for static-fun VOPs.
* Instead of having the static-fun VOPs work with the fdefn
raw-addr slot directly, have them first load reg_FDEFN with the
static-fdefinition object and then perform the critical part of
the normal call sequence.
* This covers the usual race condition, etc. involved in dealing
with an fdefn-raw-addr without first loading the function, and
allows (PPC only) the use of funcallable instances and closures as
static-functions (unlikely as that is).
Alastair Bridgewater [Sat, 7 Aug 2010 15:19:51 +0000 (15:19 +0000)]
1.0.41.25: compiler: Create sb!vm::static-fdefn-offset.
* Create sb!vm::static-fdefn-offset to provide the byte offset
from NIL to the tagged form of the fdefinition.
* Reimplement sb!vm:static-fun-offset (a misnomer) in terms of
sb!vm::static-fdefn-offset.
Alastair Bridgewater [Sat, 7 Aug 2010 15:19:41 +0000 (15:19 +0000)]
1.0.41.24: ppc: Calling-convention fixes for entry-point handling during named-call.
* For GC purposes, seven times never load reg_LIP before loading
whatever register points to the object it refers to.
* During named-call, load the function from the fdefn before
loading the raw-addr (which ends up in reg_LIP). For simple-fun
objects, this provides the reference base for reg_LIP. For other
objects this doesn't matter because reg_LIP ends up pointing to
either undefined_tramp or closure_tramp.
* This still leaves a race condition when updating fdefinitions,
but fixes the race condition surrounding function calling.
* To fix the remaining race condition, we would need to alter
the undefined function trampoline to appear to be a simple-fun
object and adjust the fdefn-fun accessors to compensate, then
arrange for "named" calls to load reg_LEXENV and do closure-fun
access in the same manner as the closure_tramp and the "unnamed"
call VOPs. This would add another instruction to the call path,
but not another memory access (as we would trade off loading the
fdefn-raw-addr for loading the closure-fun).