sbcl Log


Commit Date  
[01cc13] by Stas Boukarev Stas Boukarev

Improve knownfun declarations.

Make some types more accurate, add some
:derive-type #'result-type-first/last-arg.
Add missing %adjoin/member/assoc-test/not/key defknowns.

2013-09-06 22:03:08 Tree
[7a3dd4] by Stas Boukarev Stas Boukarev

Remove a wrong IGNORE declaration.

An incorrect ignore declaration was used with #!-sb-package-locks,
even though the ignored variables are used without sb-package-locks
too.

Patch by Douglas Katzman.

2013-09-06 17:58:24 Tree
[6364a5] by Stas Boukarev Stas Boukarev

Save some space in WITH-OUTPUT-TO-STRING.

Not passing :element-type 'character to MAKE-STRING-OUTPUT-STREAM
saves a few bytes, since it's the default value.

2013-09-06 14:23:40 Tree
[cd1c0c] by Christophe Rhodes Christophe Rhodes

Fix for sb-gmp bignum result allocation (lp#1206191)

Patch based on 59e72c69c00abf9095d82e9a7b65f9c1b54d105c from
<https://github.com/sfrank/sb-gmp> (thanks to Stephan Frank)

2013-09-06 11:43:40 Tree
[eb520f] by Christophe Rhodes Christophe Rhodes

Fix sb-gmp:mpz-pow for non-bignum bases

Don't declare types, and we don't need the check-type either

2013-09-06 11:28:21 Tree
[7a2ee8] by Stas Boukarev Stas Boukarev

Optimize CHAR-EQUAL on constant and base-char args.

The open-code transform for base-char arguments was never invoked, it
should have been defined on TWO-ARG-CHAR-EQUAL, not CHAR-EQUAL. And
enable it only for (> speed space).

Add a check for base-char into the TWO-ARG-CHAR-EQUAL function, and
invoke the optimized code, the same the transform uses.

Optimize (char-equal #\c x) by transforming it into a call to
(char-equal-constant x #\c #\C), which does
(or (char= #\c char) (char= #\C char)), or directly to that expression
with (> speed space).

(char-equal #\- x) is transformed to (char= #\- x).

2013-09-05 19:29:51 Tree
[d01d50] by Stas Boukarev Stas Boukarev

Add defknowns for TWO-ARG-CHAR-* functions.

This avoids the checks for multiple values.

2013-09-05 17:49:58 Tree
[5c52e9] by Stas Boukarev Stas Boukarev

Add a transform for EQUALP.

Similar to the EQUAL one.

Also fix a bug in the EQUAL transform when types which include
specialized arrays inside them were resulting in EQUAL being
incorrectly folded to NIL.

2013-09-05 16:39:53 Tree
[440baf] by Christophe Rhodes Christophe Rhodes

Document extensible sequence protocol

Based on patch by Jan Moringen from lp#994528

2013-09-05 16:30:33 Tree
[6242b9] by Stas Boukarev Stas Boukarev

Optimize some comparison functions for EQ cases.

Add (or (eq x y) ...) to bit-vector-=, two-arg-char-equal, pathname=.

2013-09-05 14:35:12 Tree
[367179] by Stas Boukarev Stas Boukarev

Improve the EQUAL transform.

Transform to EQL when at least one argument is not of type
(or string cons pathname bit-vector).
Transform (equal (the pathname x) (the pathname y)) to (pathname= x y).

Closes lp#1220084, based on the patch by Elias Martenson.

2013-09-05 13:10:08 Tree
[5f0cfc] by Stas Boukarev Stas Boukarev

Micro-optimize calling assembly routines on x86oids.

Do not check for multiple values in the :full-call return sequence, it
always returns just one value and CLC is issued before returning.

2013-09-04 22:10:19 Tree
[aa7b66] by Stas Boukarev Stas Boukarev

Micro-optimize calling alloc_tramp on x86_64.

In allocation-tramp, instead of using R11 temp-reg for storing the
address of alloc_tramp, use alloc-tn, because the result of
alloc_tramp will be stored there and its value doesn't have to be
preserved. And most of the time it will be allocated to a
non-64-bit-mode register, allowing to save 2 bytes on encoding.

2013-09-04 09:30:17 Tree
[3044d2] by Jan Moringen Jan Moringen , pushed by Stas Boukarev Stas Boukarev

Add SOCKET-SHUTDOWN in contrib/sb-bsd-sockets

* The new generic function SOCKET-SHUTDOWN shuts down a socket for
input, output or both. Calls shutdown(3posix)

* Test shutdown.{client,server}.{ub8,character}.{output,io} test
shutting down TCP stream sockets from the client and server side for
different element-types and directions

2013-09-02 14:10:56 Tree
[cd1b14] by Stas Boukarev Stas Boukarev

Handle compiler-error in LOAD when it's not run from inside EVAL.

When LOAD is run from the --load option or from within a new thread,
it doesn't go though EVAL and doesn't inherit its compiler-error
handler.

Fixes lp#1219601.

2013-09-02 05:44:38 Tree
[4b222e] by Stas Boukarev Stas Boukarev

slep-non-consing test: prevent from sleeping too much.

Some platforms can't sleep for short amounts of time, add a
sb-ext:with-timeout around it and don't report it as a failure, since
there's basically nothing that can be fixed in such cases.

2013-08-31 06:17:18 Tree
[35ab27] by Stas Boukarev Stas Boukarev

Micro-optimize gc scavenge.

Instead of putting the amount by which to increment the pointer and
then adding it at the end of the loop, increment the pointer
directly. Makes it slightly faster when compiled with GCC.

2013-08-31 03:29:06 Tree
[1a0d75] by Stas Boukarev Stas Boukarev

Remove a couple of unused variables in the C runtime.

2013-08-30 23:36:19 Tree
[a291e1] by Stas Boukarev Stas Boukarev

tests/subr.sh: Fix sed invocation for Solaris.

2013-08-30 01:09:24 Tree
[5fca28] by Stas Boukarev Stas Boukarev

tests/run-compiler.sh: use gcc, not cc.

2013-08-30 00:40:31 Tree
[e86533] by Stas Boukarev Stas Boukarev

Fix floating point exceptions persisting on Solaris.

(/ 0d0 0d0)
(cosh 90)

signaled an invalid-operation exception, and not overflow, on COSH,
because the previous error wasn't cleared. Clear the exception flags
in the sigfpe handler.

2013-08-29 23:56:36 Tree
[271f69] by Stas Boukarev Stas Boukarev

PPRINT (setf . a) correctly.

It was printed as (setf a).

Reported by Douglas Katzman.

2013-08-29 22:34:22 Tree
[f07f32] by Stas Boukarev Stas Boukarev

Fix building on Solaris x86-64.

sb-unix:unix-select used macros which expanded into many forms,
limited by sb-unix:fd-setsize, which on Solaris-x86-64 is 65536, as
opposed to 1024 on Linux. This resulted in long compile times which
were likely to exhaust the heap.
Use functions instead of macros.

2013-08-29 20:29:17 Tree
[69a917] by Lutz Euler Lutz Euler

Improve the test float.impure.lisp / (RANGE-REDUCTION PRECISE-PI).

The way the test calculated its expected values was flawed and worked
correctly only accidentally due to the specific test values used and
to allowing a relatively large margin of error.

This commit corrects these calculations, removes some test values and
adds others and tightens the error margin. I do not expect this to cause
the test's outcome on any platform to change.

The flaw was to reduce the arguments by taking the remainder of
truncating modulo 2 pi. This allows precise calculations only of the
sine and the tangent of values slightly above even multiples of pi, but
not for example for the sine of an argument near an odd multiple of pi.
Instead the reduction is now done by taking the remainder of rounding
to the nearest multiple of pi/2 so that all arguments near the zeroes
of both sine and cosine reduce to values near zero.

This change was prompted when the test unexpectedly failed with some
values from gcc bug 43490 which I tried when investigating lp #1137924.

2013-08-28 21:09:05 Tree
[adaba3] by Stas Boukarev Stas Boukarev

PROBE-FILE on symlinks to pipes inside /proc on Linux.

PROBE-FILE now can access symlinks to pipes and sockets in
/proc/pid/fd/ on Linux.
query-file-system already has code for handling broken symlinks,
resolving the directory part, use it on files for which realpath(3)
fails, which includes pipes and socket links in /proc.

Reported by Eric Schulte.

2013-08-28 14:46:30 Tree
Older >