sbcl-cvs-import Log

Commit Date  
[17c4e8] by jimwise jimwise fix sb-posix readdir on SunOS/x86

for the time being, disable :largefile on SunOS/x86. Unfortunately,
sb-grovel cannot navigate the somewhat sticky way in which struct
dirent gets setup for a 32-bit host with 64-bit ino_t on SunOS, so
sb-posix:readdir breaks

:largefile works fine on SunOS x86_64, and will be re-enabled on x86
after I get some more time to fight with the alien def for struct dirent

2011-03-03 19:50:21 Tree
[8e6218] by Nikodemus Siivola Nikodemus Siivola renaming oops in MAKE-PACKAGE

not updated -- but amusingly no error was signalled, because

* The form was that of a function call, so no program-error.

* Before the undefined function could be called, a non-local transfer always
took control elsewhere, so no undefined-function error.

2011-03-02 10:59:41 Tree
[930a0e] by Nikodemus Siivola Nikodemus Siivola better error messages for invalid variables

Based on patch by Roman Marynchak, lp#387333.

* Same code checks for LET and LET* in addition to lambda-lists, so make sure
the messages make sense for both contexts. Binding forms converted to
LAMBDA -- like MULTIPLE-VALUE-BIND -- still get odd messages for duplicate
variable names, though.

* Make the messages for keywords, defined constants, and global lexicals

2011-03-02 10:21:03 Tree
[bb3994] by Nikodemus Siivola Nikodemus Siivola add :NOT-NULL option to C-STRING type

By default NIL is a valid C-STRING, translated to and from C's NULL. This is
very convenient because many C functions that normally return strings return
NULL to indicate "false" or "don't know" -- and less commonly also special
case it as an argument.

There are however many C functions that don't check for NULL, so we want a
non-horrible way to say that NIL is not a good value to pass on... remains to be seen if this is non-horrible enough, but at least it
fixes a bunch of memory faults from doing things like (posix-getenv nil), and
replaces them with type-errors.

Not all C-STRING types have been audited yet, just a bunch of the more
obvious ones.

2011-03-02 09:40:22 Tree
[4078d2] by Nikodemus Siivola Nikodemus Siivola terser C-STRING unparsing

Omit parts with default values from the unparsing: just


becomes C-STRING, and


becomes (C-STRING :EXTERNAL-FORMAT :UTF-8), etc.

2011-03-02 09:30:09 Tree
[eda188] by Nikodemus Siivola Nikodemus Siivola nicer STYLE-WARNINGS from IGNORE and IGNORABLE declarations

Fixes lp#726331, based on patch by Robert P. Goldman.

2011-02-28 12:12:19 Tree
[9eba16] by Nikodemus Siivola Nikodemus Siivola death to "in: LAMBDA NIL" in compiler messages

The LAMBDA NIL was 99% of the time the lambda introduced by
%SIMPLE-EVAL-IN-LEXENV -- in other words totally uninteresting.

Have EVAL save original form, and use that to name the lambda
introduced in %SIMPLE-EVAL-IN-LEXENV:


Finally, DEFINE-SOURCE-CONTEXT for NAMED-LAMBDA that understands the
source context stashed into the name by %SIMPLE-EVAL-IN-LEXENV.

Additionally, in case there is a legitimate (LAMBDA () ...) form the
compiler wants to complain about, make sure it is printed as LAMBDA (),

2011-02-28 11:45:36 Tree
[4a1cfe] by Nikodemus Siivola Nikodemus Siivola fix MAKE-INSTANCE regression from

If we use a fake MAKE-INSTANCE emf in the presence of (SETF
to initialize the instance vector using +SLOT-UNBOUND+ before any
slots are touched, because accessing any slot can potentially cause
another to be accessed -- which in turn requires boundp information
to be present.

Reported by Slobodan Milnović on sbcl-help.

2011-02-28 08:57:19 Tree
[feba3c] by Nikodemus Siivola Nikodemus Siivola CHECK-KEY-ARGS didn't take :ALLOW-OTHER-KEYS into account

Cases of interest are:

* No :ALLOW-OTHER-KEYS present for sure.

* :ALLOW-OTHER-KEYS with a non-constant argument, or a non-constant
keyword argument which may turn out to be :ALLOW-OTHER-KEYS at



Thanks to Xach for the heads-up!

2011-02-26 16:37:25 Tree
[35f015] by Nikodemus Siivola Nikodemus Siivola hopefully fix SB-POSIX tests on Windows 7

Based on patch by Marko Kocić on sbcl-devel.

2011-02-24 08:48:31 Tree
[d69598] by Nikodemus Siivola Nikodemus Siivola faster core startup

Patch by Lutz Euler, lp#557357.

Remove unnecessary page_table initialization loop: it is allocated
using calloc, which zero-initializes it -- which as it happens is
enough for us.

2011-02-20 16:32:49 Tree
[0223f4] by Nikodemus Siivola Nikodemus Siivola faster slot-accesses in the presence of SLOT-VALUE-USING-CLASS &co

* Introducing SLOT-INFO: a structure we save into the each
EFFECTIVE-SLOT-DEFINITION object, which provides us with fast-accesses to
typecheck, reader, writer, and boundp functions for that slot. (These
functions already pre-exist, and currently live directly in the slot
definition objects.)

This replaces typecheckfuns in permutation vectors, and both the
typecheckfun and slotd in slot-tables.

Given this, when we run into SLOT-VALUE in a method body when there is an
applicable non-standard SLOT-VALUE-USING-CLASS, we don't have to punt to
the slow path, but can instead replace the SLOT-VALUE form with

`(funcall (slot-info-reader (svref .pv. (1+ ,pv-offset))) ,parameter)

which is pretty snappy as these things go. Analogously for SET-SLOT-VALUE,

* Previously slot typechecking functions were generated as part of the
DEFCLASS expansion and made part of DIRECT-SLOT-DEFINITION objects. This
was a bit wasteful, as (1) we don't need them for direct slot definitions,
and (2) we used to get a separate typechecking function for each slot in
each safe class, even if they all had the same type.

Now there's only one typechecking function per type, and that is saved only
in the SLOT-INFO structure of the relevant effective slot definitions.

* In a couple of places finalize the class a bit earlier if possible to have
a better idea of how to best implement slot
accesses. TRY-FINALIZE-INHERITANCE tries, but refuses if there are forward
referenced superclasses. CAN-OPTIMIZE-ACCESS will signal a compiler-note
about such cases.

* WRAPPER-INSTANCE-SLOTS-LAYOUT now also includes slot-types, and we consider
the instance to be obsoleted when slot-type changes. (This was a bug that
our previous type-check-function setup accidentally worked around.)

Detect slot-type violations while updating instances of safe classes.

Similarly for CHANGE-CLASS.

2011-02-20 11:48:50 Tree
[9f1753] by Nikodemus Siivola Nikodemus Siivola define STRING-WITH-FILL-POINTER type properly

...can't rely on the evaluation order of type clauses: types aren't
expressions but set specifications.

2011-02-20 10:51:39 Tree
[312074] by Nikodemus Siivola Nikodemus Siivola detect invalid use of :PREDICATE with DEFSTRUCT :TYPE

Based on patch by Roman Marynchak, lp#520607.

In case there are :TYPE and :PREDICATE options specified, :NAMED DEFSTRUCT
option should be specified too. To check this, add the flag for :PREDICATE
verify that the flag is set, :TYPEP is set but :NAMED option is not provided.

Also includes the regression test.

2011-02-20 10:48:32 Tree
[e1ed40] by Nikodemus Siivola Nikodemus Siivola warn about (FORMAT "~A" ...)

Add a compiler-macro that only checks if the destination argument is a
literal string.

Fixes lp#327223.

2011-02-20 10:43:24 Tree
[c5d49a] by Nikodemus Siivola Nikodemus Siivola better error message for an invalid lambda in COMPILE, etc

Patch by Roman Marynchak, lp#718905.

Make the error from NAME-LAMBDALIKE clearer.

2011-02-20 10:38:12 Tree
[b8d578] by Nikodemus Siivola Nikodemus Siivola better MACHINE-VERSION on Darwin

Patch by Josh Elsasser.

Use machdep.cpu.brand_string instead of hw.model.


2011-02-20 10:33:43 Tree
[751e08] by Nikodemus Siivola Nikodemus Siivola split (:BACKTRACE :MISC) test into smaller pieces

Nuff said.

2011-02-20 10:30:22 Tree
[bbcefe] by Nikodemus Siivola Nikodemus Siivola redefinition warnings for macros

Similar logic as when not to warn as DEFUN has.

Also refactor the existing redefinition conditions and
uninterestingness-tests a bit.

2011-02-20 10:27:38 Tree
[3969fa] by Nikodemus Siivola Nikodemus Siivola muffle STYLE-WARNINGs and COMPILER-NOTEs from --script loading

I have a hard time coming up with a case where either is
desirable in a script, and they can be hard to avoid in
some cases.

Fixes lp#677779, and then some.

2011-02-20 10:23:16 Tree
[4d23f1] by Nikodemus Siivola Nikodemus Siivola SB-SPROF: fix threaded wallclock profiling on x86-64

Type error due to reversed argument types in pthread_kill definition.

2011-02-20 10:19:47 Tree
[cff4ad] by Nikodemus Siivola Nikodemus Siivola be careful about stack-allocation in BACKTRACE-AS-LIST

Replace DX objects with heap-allocated ones to avoid leaking invalid

Note: doesn't deal with objects allocated on stacks of other threads
yet, as current %SYMBOL-VALUE-IN-THREAD isn't really something I
want to call during backtracing: iterating over all_threads is a

Fixes lp#310175.

2011-02-20 10:12:03 Tree
[dc7f84] (sbcl_1_0_46sbcl.1.0.46) by Juho Snellman Juho Snellman

1.0.46: will be tagged as sbcl_1_0_46

2011-02-20 04:48:34 Tree
[f2c8e8] by Juho Snellman Juho Snellman Fix solaris x86-64 page size issue

* Patch lp#720800 from Jim Wise

2011-02-18 01:12:02 Tree
[ad4fd2] by Nikodemus Siivola Nikodemus Siivola revert due to regression (lp#677779)

Reported by Ariel Badichi on sbcl-devel.

Using WITH-COMPILATION-UNIT to silence UNDEFINED-FUNCTION style-warnings for
forward-referenced functions was a bad idea after all: it caused cores dumped
using it to be started with **WORLD-LOCK** held by a dead thread.

...and it's not like WITH-COMPILATION-UNIT would ever get to summarize the
unit anyways the way it was used there.

Proper fix for this is to use UNDEFINED-REFERENCE-STYLE-WARNING as separate
condition class and just muffle those -- but this is too much to put in
during the freeze and will wait till after 1.0.46.

2011-02-16 10:35:57 Tree
Older >