sbcl Log


Commit Date  
[5cf295] by David Lichteblau David Lichteblau , pushed by David Lichteblau David Lichteblau

Fix typo in whitespacely-canonical-filenames

Thanks to Lutz Euler.

2012-06-09 22:12:32 Tree
[2b4cb8] by Nikodemus Siivola Nikodemus Siivola

a few more .mailmap entries

Trying to pick a canonical email for each, so that

git shortlog -se

shows only one line per person.

2012-06-09 21:02:28 Tree
[df44c0] by Nikodemus Siivola Nikodemus Siivola

add .mailmap so "git shortlog -ns" counts properly

2012-06-09 20:36:13 Tree
[d4b41d] by Lutz Euler Lutz Euler

Add tests for two bugs that were incidentally fixed some time ago.

Commit b894cb41d869bda6ba0c54a491becc7bb58375c1 (make FORMAT signal
errors with illegal COLINC etc. parameters) happened to fix bug 905817
(endless loop in FORMAT with zero COLINC), then unnoticed, so add a
regression test and NEWS now.

Commit 96c62c30ec9164419c790b2fbea953da2193620f (ensure that GCD returns
positive values) besides the one intended also fixed bug 516750 (type
error when trying to convert a sum of rationals to a float). Add the
failing expression from that bug to the existing test.

2012-06-09 19:24:21 Tree
[b73291] by Nikodemus Siivola Nikodemus Siivola

test backtrace-interrupted-condition-wait works on Darwin/x86 as well

2012-06-09 17:39:47 Tree
[f84d62] by Nikodemus Siivola Nikodemus Siivola

a few more tests to skip on unithreaded builds

2012-06-09 17:31:27 Tree
[b94258] by Nikodemus Siivola Nikodemus Siivola

fix :DEBUGGER :SOURCE 2 test on unithreaded builds

Trivial layout different on debugger entry cause it to break.

2012-06-09 17:21:17 Tree
[2fb479] by Nikodemus Siivola Nikodemus Siivola

test backtrace-interrupted-condition-wait works on Darwin/x86-64

2012-06-09 12:28:09 Tree
[333049] by Nikodemus Siivola Nikodemus Siivola

adjust compiler-macro expansion and lambda-list parsing

* Don't convert errors during compiler-macro expansion into runtime
PROGRAM-ERRORs: signal a compile-time warning, and simply decline to expand
the compiler-macro.

This lives in CAREFUL-EXPAND-MACRO.

* Make compiler not expand compiler-macros if there are arguments in keyword
positions that are not self-evaluating constant symbols.

This lives in two places:

(1) VERIFY-KEYWORDS signals a COMPILER-MACRO-KEYWORD-PROBLEM when it
encounters either an unknown keyword or anything except a
self-evaluating symbol in a keyword position when parsing
compiler-macro keywords.

(2) IR1-CONVERT-FUNCTOID handles this condition by unwinding from the
compiler-macro expansion, printing a note about the problem, and
returning the original form.

Calling COMPILER-MACRO-FUNCTION directly behaves exactly as before, for
both good and ill: good in the sense that it is compliant, ill in the
sense that doing things that way may expand things the compiler would
decline to expand:

(define-compiler-macro foo (&key ((a ax) t)) (format nil "a=~S" ax))

The compiler would refuse to expand (foo a 42) unless

(defconstant a 'a)

had been done beforehand, but calling the COMPILER-MACRO-FUNCTION directly
would expand it even without that -- as the spec unfortuntely requires.

2012-06-09 12:28:09 Tree
[a0773e] by Nikodemus Siivola Nikodemus Siivola

sb-alien: some alien refactoring

* Rename EXTRACT-ALIEN-VALUE & DEPOSIT-ALIEN-VALUE to %ALIEN-VALUE and
(SETF %ALIEN-VALUE).

* Split HEAP-ALIEN-INFO-SAP-FORM field into HEAP-ALIEN-INFO-ALIEN-NAME and
-DATAP. HEAP-ALIEN-INFO-SAP-FORM becomes a function that conses up the form
for the compiler, and HEAP-ALIEN-INFO-SAP replaces EVAL of the form.

* Better error checking in PICK-LISP-AND-ALIEN-NAMES, and an error message
that explains the correct form.

2012-06-09 12:28:09 Tree
[3352db] by Nikodemus Siivola Nikodemus Siivola

sb-alien-internals: ALIEN-VALUE to extract value of a symbol bound to an alien

Used in the evaluators. Also allows the simple evaluator to process alien
variables without invoking the compiler.

2012-06-09 12:04:43 Tree
[7fccd3] by Lutz Euler Lutz Euler

Micro-optimization: Avoid byte register writes on x86-64 in LOAD-TYPE.

The optimization guide for AMD's x86-64 processors recommends not
to write a partial register but instead to use MOVZX to write the
corresponding 32/64-bit register. Otherwise the instruction would have
an unnecessary dependency on the most recent write to the register,
reducing the available instruction level parallelism. On Intel's
processors this is not necessary but doesn't hurt.

To follow this recommendation, modify LOAD-TYPE to use MOVZX instead of
a byte MOV and adapt the VOPs that call it: FUN-SUBTYPE, SET-FDEFN-FUN,
and WIDETAG-OF. This additionally spares a temporary register in
FUN-SUBTYPE and allows to shorten all paths through WIDETAG-OF by one
instruction.

The effect on code size is small and mixed.

2012-06-08 15:30:15 Tree
[705c6a] by David Lichteblau David Lichteblau

Update NEWS

Minor SPARC and PPC fixes.

2012-06-08 14:19:03 Tree
[a51749] by Tomas Hlavaty Tomas Hlavaty , pushed by David Lichteblau David Lichteblau

turn off *PRINT-PRETTY* when reporting test results, want line per result

This new format is easier to parse than the old line-wrapped output.

2012-06-08 12:24:13 Tree
[27a88f] by David Lichteblau David Lichteblau

Relax an implicit restriction on the number of code constants on SPARC

Previously, LOAD-CONSTANT was restricted by SPARC's particularly small
13 bit immediate field, allowing fewer constants than on other platforms.

Fixes lp#1008996.

2012-06-08 12:24:13 Tree
[9f4fea] by David Lichteblau David Lichteblau

In whitespace canonicalization, find a suitable make automatically

2012-06-08 12:24:10 Tree
[7535b0] by David Lichteblau David Lichteblau

Simplify ppc's MOVE-TO-WORD/INTEGER

2012-06-07 23:16:57 Tree
[040344] by David Lichteblau David Lichteblau

Fix inline fixnum LDB on PowerPC for certain bytespecs

Previously, the inline fixnum version of (ldb (byte 8 24) -1) would
return #x3f instead of #ff.

2012-06-07 21:47:05 Tree
[adc09c] by Lutz Euler Lutz Euler

Fix test character.pure.lisp / BUG-994487 on non-unicode.

Replace a literal 1114111 with (1- CHAR-CODE-LIMIT) so that the test
works on #-sb-unicode, too.

2012-06-07 21:21:47 Tree
[4de152] by Lutz Euler Lutz Euler

Add a test for range reduction of trigonometric functions on non-x86.

Trigonometric functions of large float arguments yield differing results
depending on how range reduction is done. There is already a test for
the results expected on x86, float.pure.lisp/(:range-reduction :x87).

Add a test for the results expected from GNU libm and enable it for
all platforms except x86. The new test is impure and therefore added
to "float.impure.lisp". Move the x86 test there, too, to reduce the
potential for future confusion.

2012-06-07 12:23:11 Tree
[d7c938] by Lutz Euler Lutz Euler

Skip the float.pure.lisp/RANGE-REDUCTION test outside x86.

The test was and is meant only to be used on x86 as it tests for results
the x87 FPU computes, which can differ from those on other platforms.
It was accidentally enabled for all platforms with commit
4c81c652cdc32faefee1bccb84c3c9a7854e3edd.

Revert this by skipping the test on everything except x86. Augment
the test's name and improve its comment so that it hopefully won't be
enabled again everywhere so easily.

2012-06-07 12:23:11 Tree
[05abd4] by Lutz Euler Lutz Euler

Small enhancements to ISQRT

Replace MULTIPLE-VALUE-LIST with MULTIPLE-VALUE-BIND which conses less
and is slightly faster.

Correct the docstring.

Add a test for correctness.

2012-06-06 14:30:51 Tree
[25d55f] by Stas Boukarev Stas Boukarev

Restore build on sparc/solaris.

gc-internal.h: include interr.h before `lose' is used.

Fixes lp#1008506.

2012-06-04 17:24:46 Tree
[a5f57f] by Nikodemus Siivola Nikodemus Siivola

emit compiler notes of NLX value-cells when (> SPEED SAFETY)

People have a right to know: it's NEWS.

2012-05-27 16:46:05 Tree
[3352e4] by Nikodemus Siivola Nikodemus Siivola

elide value cells for NLXs when it seems like the right thing

Previously we only did this for unsafe code.

Now we also elide them for

(1) exits from DX functions: if a DX function escapes its proper context,
trying to perform NLX to a stale tag is the least of our worries.

(2) functions that cannot escape. Since the escape analysis isn't yet very
tested, disable it for safe code, though. If this raises hairs on your
neck, consider this: even if our analysis is wrong, and a function we
didn't think could escape does, we're in the land of "undefined
consequences" anyways.

If you're wondering if this is worth it, compare

(defun feh (x)
(flet ((meh () (return-from feh 'meh)))
(typecase x
(cons (or (car x) (meh)))
(t (meh)))))

(time (loop repeat 10000 do (feh t)))

with and without the escape analysis.

2012-05-27 16:46:05 Tree
Older >