Nikodemus Siivola [Thu, 14 Oct 2010 10:57:29 +0000 (10:57 +0000)]
1.0.43.53: less CPU-speed sensitive test for bug 654289
Instead of hardcoding a time limit, compile bits of code with
different sized constants, and compare the times in relation
to each other.
Nikodemus Siivola [Wed, 13 Oct 2010 15:07:29 +0000 (15:07 +0000)]
1.0.43.52: correct char-size for :EXTERNAL-FORMAT :DEFAULT
Fixes bug 657183.
Make picking the char-size part of picking input/output routines,
and make set-fd-stream-routines set FD-STREAM-CHAR-SIZE from it.
For cleanliness sake, don't ever construct an FD-STREAM with an
inconsistent external-format and char-size -- meaning the default
external-format for the FD-STREAM structure cannot be :DEFAULT.
...this should not matter, but in case someone inspects an unfinished
stream instance, at least things make a bit more sense.
Nikodemus Siivola [Wed, 13 Oct 2010 13:24:26 +0000 (13:24 +0000)]
1.0.43.51: disable get-protocol-by-name/error test on threaded FreeBSD
Workaround for bug 659857.
At least some versions of FreeBSD return -1 and errno=EINTR for
unknown protocols.
Nikodemus Siivola [Wed, 13 Oct 2010 13:13:35 +0000 (13:13 +0000)]
1.0.43.50: better function signature checking for self-calls
Fixes bug 655126.
Allow passing a lambda-list to GET-DEFINED-FUN, and when provided
one, make up an FTYPE based on that lambda-list.
Nikodemus Siivola [Tue, 12 Oct 2010 14:42:53 +0000 (14:42 +0000)]
1.0.43.49: (SETF FDEFINITION) and (SETF SYMBOL-FUNCTION) should clear derived ftype
Fixes 659220.
Just call CLEAR-INFO unless the type is declared.
Paul Khuong [Tue, 12 Oct 2010 05:36:38 +0000 (05:36 +0000)]
1.0.43.48: Unbreak fast-ash-c/fixnum=>fixnum on x86
* ZEROIZE is an x86-64ism (introduced in 1.0.43.47).
Paul Khuong [Tue, 12 Oct 2010 05:10:07 +0000 (05:10 +0000)]
1.0.43.47: Unfix ASH of constant shift on x86oids
* The fixnum=>fixnum VOPs for ASH used to explicitly handle shifts greater
than the word length by computing a zero instead. These should be
constant-folded away in IR1 now.
* 1.0.43.45 incidentally fixed lp #309063 (which is what the fix above
was used for). Add a test case, update NEWS, and note the optimizations
committed in 1.0.43.{42,43,47}.
Paul Khuong [Tue, 12 Oct 2010 04:52:24 +0000 (04:52 +0000)]
1.0.43.46: Simplify some type tests to EQL comparisons
* When the type to test is a singleton type, check for EQLity
against the one value inhabiting that type.
Paul Khuong [Tue, 12 Oct 2010 04:50:24 +0000 (04:50 +0000)]
1.0.43.45: More type-directed constant folding
* 1.0.30.2 introduced logic to use MEMBER-TYPEs during constant
propagation. This commit uses SINGLETON-TYPE-P to extend that
logic to more types (NUMERIC and CHARACTER-SET).
* This exposes additional constant-folding opportunities in
src/code/bit-bash.lisp; the necessary definitions are now available
at compile-time.
Paul Khuong [Tue, 12 Oct 2010 04:46:02 +0000 (04:46 +0000)]
1.0.43.44: New type method: TYPE-SINGLETON-P
* The new type method is used to Determine whether a type is inhabited
by exactly one object. If so, it returns and the object. Otherwise,
it returns NIL, NIL.
* It is only defined for MEMBER, CHARACTER-SET and NUMERIC -TYPEs so
far.
* The default is to always return NIL, NIL.
Paul Khuong [Tue, 12 Oct 2010 04:43:48 +0000 (04:43 +0000)]
1.0.43.43: Merge more equivalent branches together
* Recognize cases of (if foo [leaf] [same leaf]), and compile the conditional
branch away. We used to only perform something similar to that when the
branches jumped to exactly the same block. We now detect simple cases of
equivalent blocks.
Paul Khuong [Tue, 12 Oct 2010 04:41:16 +0000 (04:41 +0000)]
1.0.43.42: Constant fold IFs before performing IF/IF conversion
IF/IF-conversion is somewhat similar to "the trick": when a conditional
branches on an lvar that may be written to by multiple nodes, duplicate
the conditional after each of the writers.
We used to perform that before constant-folding IFs. We now do the
reverse: it's always better to completely flush the branch away than to
duplicate it.
Nikodemus Siivola [Mon, 11 Oct 2010 14:29:13 +0000 (14:29 +0000)]
1.0.43.41: TYPE-ERROR printing tweak for *PRINT-ESCAPE* = T
Print as #<TYPE-ERROR exptected-type: SOME-TYPE datum: SOME-DATUM> when
possible.
Virtually every time I see a TYPE-ERROR printed with *PRINT-ESCAPE* =
T I need to go look for the place where it is printed in order to see
what the actual problem is -- and I don't think I'm the only one.
This is hopefully one annoyance less.
Juho Snellman [Sun, 10 Oct 2010 00:34:11 +0000 (00:34 +0000)]
1.0.43.40: Allow use of unmangled win32 function names
* Patch lp#657117 from Kalyanov Dmitry
Nikodemus Siivola [Sat, 9 Oct 2010 23:09:26 +0000 (23:09 +0000)]
1.0.43.39: proclaimed function types and NOTINLINE
Declaring a function NOTINLINE no longer causes the compiler
to ignore its proclaimed FTYPE.
Trusting the proclaimed type is harmless, as NOTINLINE calls
are compiled just like regular (as opposed to inlined) calls.
Nikodemus Siivola [Sat, 9 Oct 2010 22:33:41 +0000 (22:33 +0000)]
1.0.43.38: some PPRINT-LOGICAL-BLOCK issues
:PER-LINE-PREFIX was multiply-evaluated, and both it, :PREFIX, and :SUFFIX
caused code-deletion notes to be issued.
Stick a ONCE-ONLY in there, and use
(declare (string ...))
instead of
(unless (typep x 'string) (error ...))
Python derives the fact that the argments must be strings by the time
the TYPEP call occurs from the call to START-LOGICAL-BLOCK, hence the
code-deletion note for the call to ERROR.
Nikodemus Siivola [Fri, 8 Oct 2010 19:45:15 +0000 (19:45 +0000)]
1.0.43.37: update ASDF to 2.009
Alastair Bridgewater [Thu, 7 Oct 2010 16:53:12 +0000 (16:53 +0000)]
1.0.43.36: threads: Add ATOMIC-INCF improvement notification to NEWS.
* Updated NEWS, that is all.
Nikodemus Siivola [Thu, 7 Oct 2010 16:49:30 +0000 (16:49 +0000)]
1.0.43.35: fix make-host-2.lisp from 1.0.43.34
THAT was not supposed to go in. Grr. Sorry.
Nikodemus Siivola [Thu, 7 Oct 2010 16:40:47 +0000 (16:40 +0000)]
1.0.43.34: differentiate cross-compiler output from target and host
No difference in the end-product, but seeing "x-compiling" in
build-logs makes them easier to read for slow people like me.
That is:
* while building the xc-host messages are from the host compiler.
If the host happens to be SBCL, that means:
; compiling (DEFUN FOO ...)
* while building the target:
; x-compiling (DEFUN FOO ...)
* while building CLOS and contribs on target:
; compiling (DEFUN FOO ...)
Alastair Bridgewater [Thu, 7 Oct 2010 16:37:10 +0000 (16:37 +0000)]
1.0.43.33: ppc: Implement %ARRAY-ATOMIC-INCF/WORD
* Implement new VOP ARRAY-ATOMIC-INCF/WORD
* Add ppc to the appropriate reader coditionals to
enable use of the new VOP.
Alastair Bridgewater [Thu, 7 Oct 2010 16:36:54 +0000 (16:36 +0000)]
1.0.43.32: x86: Implement %ARRAY-ATOMIC-INCF/WORD.
* Implement new VOP ARRAY-ATOMIC-INCF/WORD
* Add x86 to the appropriate reader conditionals to
enable use of the new VOP.
Alastair Bridgewater [Thu, 7 Oct 2010 16:36:37 +0000 (16:36 +0000)]
1.0.43.31: x86-64: Implement %ARRAY-ATOMIC-INCF/WORD.
* Implement new VOP ARRAY-ATOMIC-INCF/WORD
* Add x86-64 to the appropriate reader conditionals to
enable use of the new VOP.
Alastair Bridgewater [Thu, 7 Oct 2010 16:35:53 +0000 (16:35 +0000)]
1.0.43.30: threads: Initial implementation of ATOMIC-INCF for arrays.
* Teach SB-IMPL::EXPAND-ATOMIC-FROB to deal with unboxed
vectors of words as places.
* Define SB-KERNEL:%ARRAY-ATOMIC-INCF/WORD by analogy to
SB-KERNEL:%RAW-INSTACE-ATOMIC-INCF/WORD.
* Add SB-KERNEL:%ARRAY-ATOMIC-INCF/WORD to the VM fndb.
* While we're here, define an interpreter stub for
%ARRAY-ATOMIC-INCF/WORD. %RAW-INSTANCE-ATOMIC-INCF/WORD
still needs one, but that's out of scope right now.
* Note that this is just the arch-independent parts of
ATOMIC-INCF for arrays, the per-arch parts will be separate
commits.
Nikodemus Siivola [Thu, 7 Oct 2010 14:10:40 +0000 (14:10 +0000)]
1.0.43.29: fix OVERAGER-CHARACTER-BUFFERING test-case
* It should be OVEREAGER-CHARACTER-BUFFERING.
* mktemp doesn't allow a suffix after the Xs. Most incidiously, on
Linux it did not even signal an error, but returned "BCL-fifo-XXXXXXX",
causing mkfifo to fail.
Nikodemus Siivola [Wed, 6 Oct 2010 15:50:34 +0000 (15:50 +0000)]
1.0.43.28: DESCRIBE ALWAYS-BOUND declarations for symbols
EOM
Nikodemus Siivola [Wed, 6 Oct 2010 12:48:17 +0000 (12:48 +0000)]
1.0.43.27: DESCRIBE optimization policy qualities for symbols
They should be in the manual too, but this is a start.
Nikodemus Siivola [Wed, 6 Oct 2010 08:59:32 +0000 (08:59 +0000)]
1.0.43.26: propagate-local-call-args for lambdas with optional-dispatches too
Previously we elided the propagation if the lambda had an entry-fun
or an optional-dispatch. The comment notes that we "If the function
has an XEP, then we don't do anything".
There are, however, lambdas with optional-dispatche that don't have
XEPs. Doing propagation for these is required for proper &REST list
type derivation.
Fixes lp#655203.
Nikodemus Siivola [Tue, 5 Oct 2010 08:26:15 +0000 (08:26 +0000)]
1.0.43.25: (LOOP WITH NIL = ...) caused unused variable style-warnings
Patch by Roman Marynchak. Fixes lp#613871.
Always declare #:LOOP-IGNORE variables ignored -- even if they
have initializations.
Nikodemus Siivola [Tue, 5 Oct 2010 07:46:57 +0000 (07:46 +0000)]
1.0.43.24: initialize cold-layouts with source-location NIL, not 0
Fixes lp#458015.
Nikodemus Siivola [Mon, 4 Oct 2010 11:26:10 +0000 (11:26 +0000)]
1.0.43.23: enable let-conversion for open-coded ALIEN-FUNCALL calls
Otherwise DEBUG > SPEED prevents let-conversion, and leads to
%SAP-ALIEN being left in the code.
Fixes lp#654485.
Nikodemus Siivola [Mon, 4 Oct 2010 10:43:39 +0000 (10:43 +0000)]
1.0.43.22: better errors for invalid :EXTERNAL-FORMAT arguments
Affects OPEN & RUN-PROGRAM. String <-> octets conversions did
the right thing already.
Nikodemus Siivola [Mon, 4 Oct 2010 09:51:59 +0000 (09:51 +0000)]
1.0.43.21: typo in COPYING file
Spotted by Jean-Philippe Paradis.
Nikodemus Siivola [Mon, 4 Oct 2010 09:31:02 +0000 (09:31 +0000)]
1.0.43.20: missing NEWS for 1.0.43.19
EOM
Nikodemus Siivola [Mon, 4 Oct 2010 09:27:56 +0000 (09:27 +0000)]
1.0.43.19: don't record source-paths for sub-parts of quoted constants
Fixes the performance-half of lp#654289.
Nikodemus Siivola [Mon, 4 Oct 2010 09:15:32 +0000 (09:15 +0000)]
1.0.43.18: index SB-EXT:*EVALUATOR-MODE* under #'EVAL in the manual
Looking for "Interpreter" in the concept index isn't probably the
first thing most people do.
Fixes the documentation half of lp#654289.
Nathan Froyd [Mon, 4 Oct 2010 02:12:53 +0000 (02:12 +0000)]
1.0.43.17: fix static symbols for array dispatch tables
The array dispatch tables have gone through several renamings. Unfortunately,
the references to the names in compiler/generic/parms.lisp have not been
renamed as well. Do so, and micro-optimize generic array access slightly.
(Optimizing SYMBOL-VALUE on static/global symbols would help as well...)
Alastair Bridgewater [Sun, 3 Oct 2010 14:50:53 +0000 (14:50 +0000)]
1.0.43.16: compiler: Fix non-unicode build.
* Building #-sb-unicode has been broken since 1.0.36.15, due
to a bug in the then-new element type handling for unions of
array types.
* The value originally selected as a sentinel value for not
having processed any of the types in a union was *empty-type*,
which is also the element-type of (array nil (*)), also known
as a subtype of string.
* Simple-string is a union type of (array nil (*)), (array
character (*)), and simple-base-string on sb-unicode targets.
It is a union type of (array nil (*)) and simple-base-string
on non-unicode targets.
* Because the (array nil (*)) came first in the list of
types in the union, and because its element-type was
*empty-type*, the sentinel value, it was ignored when
computing the overall array element type.
* Because the character and base-char types are disjoint,
the overall array element type calculation came up with the
correct answer on unicode builds.
* To correct the problem, select a sentinel value that is
not a type object: NIL.
* From IRC, this morning:
[9:40] * nikodemus hates (array nil)
[9:40] <nikodemus> and it hates me right back
Nikodemus Siivola [Sun, 3 Oct 2010 08:42:37 +0000 (08:42 +0000)]
1.0.43.15: use gcc-3 compiler in Cygwin for runtime too
GCC-4.x can not compile with -mno-cygwin; running gcc -mno-cygwin prints
a message advising to use mingw cross-compiler.
Patch by Kalyanov Dmitry.
Nikodemus Siivola [Sun, 3 Oct 2010 08:37:48 +0000 (08:37 +0000)]
1.0.43.14: typo in asdf-module.mk
* gcc-3, not gcc=3. I wonder how I managed to do that.
Nikodemus Siivola [Thu, 30 Sep 2010 08:43:55 +0000 (08:43 +0000)]
1.0.43.13: "minor fixed for Win32" from Kalyanov Dmitry
* fix run-sbcl.sh for cygwin: need to convert the path.
* fix contrib building for cygwin with GCC 4.x installed: require GCC
3.x since GCC 4.x apparently doesn't do -mno-cygwin.
* PeekConsoleInput's third argument is the number of array in elements,
not bytes. http://msdn.microsoft.com/en-us/library/ms684344%28VS.85%29.aspx
Old usage led to stack overwriting.
Nikodemus Siivola [Thu, 30 Sep 2010 08:40:35 +0000 (08:40 +0000)]
1.0.43.12: edit STYLE for stricter patch submission guidelines
* "git format-patch -1" is superior to plain diffs, since it includes the commit
message as well -- and the patch author is the best person to write it.
* Explain when to use Launchpad and when to use sbcl-devel.
Nikodemus Siivola [Thu, 30 Sep 2010 08:39:39 +0000 (08:39 +0000)]
1.0.43.11: smarter timer expiry
When expiring timers, run all expired timers instead of setting the
system timer again after expiring a single one.
Hopefully addresses lp#375515.
Nikodemus Siivola [Thu, 30 Sep 2010 08:36:38 +0000 (08:36 +0000)]
1.0.43.10: make.sh now accepts --dynamic-space-size=<size> option
...so users can build SBCL with the right default without
touching source.
Fixes lp#383222.
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.