sbcl Log

Commit Date  
[4587c7] by Nikodemus Siivola Nikodemus Siivola better source locations for failure-to-stack-allocate notes

2009-05-16 11:26:36 Tree
[79df11] by Nikodemus Siivola Nikodemus Siivola allow stack allocation for arguments of FILL and REPLACE

FUN-INFO-RESULT-ARG is either NIL, or the index of the argument
that is EQ to the result of the function. Use LVAR-GOOD-FOR-DX-P
with the argument lvar that is the result argument.

Other arguments are for DX as well: if the result can be stack
allocated then unless the other arguments are otherwise accessible
they too can be stack allocated -- and if they are otherwise accessible
then DX analysis should refuse to stack allocate.

2009-05-16 11:24:29 Tree
[7c5a4d] by Nikodemus Siivola Nikodemus Siivola fix regressions from

* Assert the declared element-type in the
HAIRY-DATA-VECTOR-(REF|SET) transforms no longer fire for
non-simple arrays.

* Turns out that %DATA-VECTOR-AND-INDEX was the only place where the
index was checked being non-negative on some code paths -- not
taking that route meant that type check weakening from INDEX to
FIXNUM allowed negative indexes to slip in under the the radar in
SAFETY 1 code.

While this follows what we say in the manual, being more careful
about bounds checks is probably a good idea, so be more
conservative about weakenin integer types: collapse unions of
intervals into a single interval, but dont' eliminate the most
extreme bounds.

Adjust one test that checked for the old behaviour, and
update documentation.

2009-05-15 21:11:44 Tree
[8f571a] by Nikodemus Siivola Nikodemus Siivola depessimize accesses to maybe non-simple arrays with known element types

The transforms for HAIRY-DATA-VECTOR-(REF|SET) which inserted a call
to %DATA-VECTOR-AND-INDEX were never a win unless the array was
known to be simple: the element type dispatch is quite effcient, and
the slow path has an open coded WITH-ARRAY-DATA which performs

For simple arrays the transforms remain a win, since
%DATA-VECTOR-AND-INDEX will be open coded: at most one dereference
is ever necessary.

Unfortunately declaring the element type of a non-simple array remains
a loss -- just a less drastic one then before.

2009-05-14 10:23:47 Tree
[cb2be4] by Nikodemus Siivola Nikodemus Siivola implement os_restore_fp_control() for OpenBSD x86

Fixes problems with the floating point modes being forgotten. Also
fixes one of the float tests by clearing the exception flags first,
insuring that the right exception is raised.

Patch by Josh Elsasser.

2009-05-13 18:13:48 Tree
[afcd43] by Nikodemus Siivola Nikodemus Siivola better generic function lambda-lists

Add a few &REST arguments with documentary value, and use better
argument names.

2009-05-13 17:56:31 Tree
[2b0851] by Nikodemus Siivola Nikodemus Siivola better MACHINE-VERSION answers on BSD'ish platforms


Patch by Josh Elsasser.

2009-05-13 13:58:31 Tree
[406c41] by Nikodemus Siivola Nikodemus Siivola QUIT related work

* SAVE-LISP-AND-DIE :TOPLEVEL can return, just call QUIT if it does.

* --script should not override QUIT called by user with its own exit status.
(reported by Hubert Kauker)

2009-05-12 11:00:13 Tree
[69f3ae] by Nikodemus Siivola Nikodemus Siivola pretty-printing LOOP forms

Thanks to Tobias Ritterweiler.

Update NEWS a bit while at it.

2009-05-12 09:58:45 Tree
[eaf81b] by Nikodemus Siivola Nikodemus Siivola make MAKE-ARRAY transforms co-operate with FILL better

When the transform for FILL fires, and the type of initial-element
has not yet been propagated, so VECTOR-FILL* fires instead of a more
specific transform (which currently exist only for

Annotate the type with THE and the SAETP-SPECIFIER so the most
specific transform can fire.

Reported by Stas Boukarev.

2009-05-12 09:11:39 Tree
[1a22ba] by Nikodemus Siivola Nikodemus Siivola hopefully fix Win32 build

* Broken by

2009-05-12 08:21:12 Tree
[4da7c0] by Nikodemus Siivola Nikodemus Siivola more error reporting tweakery

* Now that *CURRENT-PATH* is bound first by PROCESS-TOPLEVEL-FORM
otherwise the more accurate source path in the node is never used.

(Experimentally it seems that *CURRENT-PATH* is never more

Everything seems OK, but the whole source path mechanism could
probably us an audit, and possibly some refactoring.

the call to SPECIALIZER-TYPE in case of undefined types. (Left out
from last patch by accident.)

2009-05-11 19:41:48 Tree
[983734] by Nikodemus Siivola Nikodemus Siivola undefined warning and compilation unit summary tweaking

* Signal a full warning for undefined types when the name is in the
COMMON-LISP package.

* Explain probable source of error when the name of an undefined type
is a quoted object.

* When same original source form is responsible for multiple
undefined warnings, only signal the first: otherwise we may signal
a boatload of identical warnings for a single source form just
because the compiler tries so very hard to make sense of it.

* Don't summarize the names of undefined things by signalling new
warnings for them, instead include the names in the compilation
unit summary.

2009-05-11 15:44:11 Tree
[9ee246] by Gabor Melis Gabor Melis resignal signals received in foreign threads

Signals delivered to threads started from foreign land (read: directly
by pthread_create, not by MAKE-THREAD) are redirected to a Lisp thread
by blocking all signals and resignalling.

2009-05-11 13:24:34 Tree
[4a9077] by Nikodemus Siivola Nikodemus Siivola better logic for failure-to-stack-allocate notes

* Elide if the use is a REF, not if the source form is a symbol.

* Tests.

2009-05-11 11:17:51 Tree
[fbae90] by Nikodemus Siivola Nikodemus Siivola compiler notes for failure to stack allocate

* Emit a compiler note when stack allocation was requested, but could
not be provided.

2009-05-11 10:21:20 Tree
[c0578d] by Nathan Froyd Nathan Froyd convert once-used DEFMACROs to EVAL-WHEN'd SB!XC:DEFMACROs

There were a couple FIXMEs lurking about this. Fixing themm is easy enough
and reduces the core size slightly.

2009-05-09 13:00:29 Tree
[d515b8] by Nikodemus Siivola Nikodemus Siivola minor post-DEFGLOBAL cleanups

* Call array-accessor dispatch tables %%foo%% instead of **foo** to
warn off the unwary.

* Set their size to (1+ widetag-mask) -- this should not really matter
since we check for other-pointer-lowtag before stripping the widetag,
as widetag are always immediate objects, so the low bit is zero.
...but this is more obviously correct, and costs us, what 4 words
of storage.

* Mark one FIXME/KLUDGE more, since people have been so busy getting
rid of them...

* Restore the imperative tone in DEFVAR docstring.

* Oops, left one FLUSHABLE too many in last commit.

2009-05-09 09:27:07 Tree
[7bedae] by Nikodemus Siivola Nikodemus Siivola move FLUSHABLE back to SB!ASSEM

* Broke Sparc build, and maybe others.

2009-05-09 08:58:21 Tree
[cf4908] by Nathan Froyd Nathan Froyd remove :PREFIX/:SUFFIX from DEFENUM for MORE GREPPABILITY

Searching for useful things like even-fixnum-lowtag in the source won't
find the actual definition due to cleverness with DEFENUM. This cleverness
is the source of several FIXMEs throughout the code. I can personally
remember being baffled at the magic of even-fixnum-lowtag and friends
magically springing into existence when I could not easily grep for their
definitions. In the interest of clarity, remove the cleverness and update
all relevent DEFENUMs.

In the interest of OAOO, move TRACE-TABLE-* constants to generic code while
we're at it, too. Doing the same thing for the *-TRAP constants is left
as an exercise for another day.

2009-05-08 20:58:23 Tree
[79a8e5] by Nikodemus Siivola Nikodemus Siivola DEFGLOBAL, ALWAYS-BOUND, GLOBAL, SYMBOL-GLOBAL-VALUE

* ALWAYS-BOUND allows the compiler to elide boundness checks
for symbol value access, and prohibits MAKUNBOUND. This is
handled via a new globaldb entry.

GLOBAL makes the compiler elide TLS checking for symbol
values access, and prohibits rebinding. This is handled via
new globaldb :variable :type, namely :global.

DEFGLOBAL is build on top of these. Global variables are mainly an
efficiency measure on threaded builds, but can also express
intention as they prohibit rebinding.

SYMBOL-GLOBAL-VALUE VOPs to all backends. On unithreaded
builds these are trivial copies of the non-global versions.

* Tell SB-CLTL2 about both GLOBAL and ALWAYS-BOUND declarations too.

* Document in the Efficiency chapter of the manual.

* Prohibit declaring constants special.

* Tests.

Later: use these new features inside SBCL itself. For now there is
only a single DEFGLOBAL used, but more could well be.

2009-05-08 19:08:07 Tree
[885253] by Nikodemus Siivola Nikodemus Siivola some manual love

Updates, light reorganization and a touch of prettification.

Also warn about the dangers of dynamic environment as it pertains to

2009-05-08 09:32:28 Tree
[08917e] by Nathan Froyd Nathan Froyd delete %RAW-BITS and %SET-RAW-BITS

%VECTOR-RAW-BITS and %SET-VECTOR-RAW-BITS are exactly the same functionality
without the weird dancing with SB!VM:VECTOR-DATA-OFFSET.

2009-05-08 03:00:25 Tree
[9e5c8c] by Nikodemus Siivola Nikodemus Siivola move FLUSHABLE to SB-C, export UNSAFELY-FLUSHABLE for consistency


2009-05-07 18:06:12 Tree
[363e0b] by Nikodemus Siivola Nikodemus Siivola Mr. ATOMIC-INCF/SYMBOL, meet Mr. AX

Given the chop as as dangerous if the symbol-value happens to be
anything else but a fixnum. If this are still desired, ATOMIC-INCF
can be extended to support symbols proclaimed FIXNUM -- but that too
will lose on unbound symbols.

Was only used in a single test, replace with a structure and

2009-05-07 17:44:09 Tree
Older >