sbcl-cvs-import Log


Commit Date  
[983734] by Nikodemus Siivola Nikodemus Siivola

1.0.28.38: 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

1.0.28.37: 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

1.0.28.36: 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

1.0.28.35: 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

1.0.28.34: 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

1.0.28.33: 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

1.0.28.32: 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

1.0.28.31: 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

1.0.28.30: 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.

* Add %SET-SYMBOL-GLOBAL-VALUE, FAST-SYMBOL-GLOBAL-VALUE, and
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

1.0.28.29: some manual love

Updates, light reorganization and a touch of prettification.

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

2009-05-08 09:32:28 Tree
[08917e] by Nathan Froyd Nathan Froyd

1.0.28.28: 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

1.0.28.27: move FLUSHABLE to SB-C, export UNSAFELY-FLUSHABLE for consistency

EOM

2009-05-07 18:06:12 Tree
[363e0b] by Nikodemus Siivola Nikodemus Siivola

1.0.28.26: 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
ATOMIC-INCF there.

2009-05-07 17:44:09 Tree
[6dd0b1] by Nikodemus Siivola Nikodemus Siivola

1.0.28.25: document CLOS slot type checking policy

...especially since given our normal declarations-are-assertions
policy it is somewhat surprising.

2009-05-07 16:48:04 Tree
[a0238f] by Nikodemus Siivola Nikodemus Siivola

1.0.28.24: better %ARRAY-DISPLACED-FROM handling

James Knight pointed out that signalling an error at ADJUST-ARRAY
time is not quite right, since the other array may be otherwise
unreachable already -- we're following a weak pointer after all.

Oops. Enter the twilight zone between clever by half and slightly
horrible:

When a potentially bogus ADJUST-ARRAY is detected, walk the chain
of backpointers, and set FILL-POINTER, AVAILABLE-ELEMENTS, and
all dimensions of the too-large displaced-from arrays to zero.

This in turn causes any typecheck involving the array dimensions
to trap, as well as any bounds-checked access.

To make these errors more understandable, save the original
dimensions of the array, punning them to the ARRAY-DISPLACED-P
slot, and identify the bogus arrays in INVALID-ARRAY-INDEX-ERROR
function, and the OBJECT-NOT-TYPE-ERROR internal error handler;
signal an INVALID-ARRAY-ERROR instead, which explains what is going
on.

Whew.

Oh, and a BIG THREAD SAFETY NOTE regarding the fundamental nature
of our ADJUST-ARRAY implementation. It is not thread safe in
parallel with accesses to the array being adjusted. Tentative
idea is to add one more level of indirection to array headers,
so that we can get atomic updates without locking.

2009-05-07 11:11:05 Tree
[48e457] by Alastair Bridgewater Alastair Bridgewater

1.0.28.23: Fix value of CL:- in inspector

The inspector was the last holdout against using INTERACTIVE-EVAL.

...take one down, commit the fix, 97 FIXMEs left in the source... (with
apologies to Nathan Froyd, per 1.0.28.7)

2009-05-07 02:12:58 Tree
[4fba4f] by Alastair Bridgewater Alastair Bridgewater

1.0.28.22: Fix deref of (alien (* t)) values

When attempting to deref a value known to the compiler as an (alien
(* t)) issue a compiler note rather than attempting to open-code (the
type may be better known at run-time).

Update NEWS with mention of the changes from 1.0.28.11 (oops).

2009-05-06 21:12:08 Tree
[321fff] by Nikodemus Siivola Nikodemus Siivola

1.0.28.21: further array typechecking optimization

(really, this time. contents accidentally left out from 1.0.28.20)

* Eliminate extra lowtag checking from the array element type check:
since we know we are dealing with an array, we can use the same
fast widetag extraction code that array type dispatching used --
factoring it out into %OTHER-POINTER-WIDETAG.

* If we know after checking the dimensions that the array must have
a header, and we know that the array is simple, we can deduce that
there is exactly one level of indirection.

* Similarly, if we know that the array has a header, we can
immediately pull out the data vector to check if it too has a
header instead of doing an extra test.

2009-05-06 18:39:49 Tree
[3266b5] by Nikodemus Siivola Nikodemus Siivola

1.0.28.20: further array typechecking optimization

* Eliminate extra lowtag checking from the array element type check:
since we know we are dealing with an array, we can use the same
fast widetag extraction code that array type dispatching used --
factoring it out into %OTHER-POINTER-WIDETAG.

* If we know after checking the dimensions that the array must have
a header, and we know that the array is simple, we can deduce that
there is exactly one level of indirection.

* Similarly, if we know that the array has a header, we can
immediately pull out the data vector to check if it too has a
header instead of doing an extra test.

2009-05-06 18:35:41 Tree
[7306e2] by Nikodemus Siivola Nikodemus Siivola

1.0.28.19: faster ARRAY-DIMENSION for non-vectors

Previously each ARRAY-DIMENSION call for a non-vector resulted in
checking (1) if the array was a displaced array (2) if the array it
was displaced to was still big enough for it.

This sucks pretty badly, because we use ARRAY-DIMENSION in bounds
checking -- especially given how rare it is to have an array
displaced to an adjustable array.

Add a new slot, ARRAY-DISPLACED-FROM, to array-headers, and store a
list of weak backpointers to arrays displaced to the array in
question there. SET-ARRAY-HEADER (as part of ADJUST-ARRAY) now
checks this list, and signals an error if any of the displaced-from
arrays is larger than the new size.

This also allows us to open code ARRAY-DIMENSION as long as the
array rank is known.

2009-05-06 16:28:03 Tree
[757091] by Nikodemus Siivola Nikodemus Siivola

1.0.28.18: better TRULY-DYNAMIC-EXTENT handling

Since RECHECK-DYNAMIC-EXTENT-LVARS passes T as the DX type,
TRULY-DYNAMIC-EXTENT did not unconditionally allow DX allocation
regardless of policy, as was the intention.

Save the LVARs initially along with the DX type (T or :TRULY),
so that R-D-E-L can use the correct DX type when rechecking.

Test case.

2009-05-06 15:50:19 Tree
[1785d1] by Nikodemus Siivola Nikodemus Siivola

1.0.28.17: tn packing issues in ALLOCATE-VECTOR-ON-STACK on x86oids

* If WORDS and LENGTH were packed in the same TN all manner of
badness arose. Adjust lifetimes to make sure it doesn't happen,
and try to pack LENGTH into EAX while at it.

Gabor Melis and Paul Khuong did the figuring out what's wrong.

2009-05-06 13:27:52 Tree
[aa6904] by Alastair Bridgewater Alastair Bridgewater

1.0.28.16: Fix a mistake in 1.0.28.15

In host-load-stem, the flags argument was declared ignore while
actually being used. Fixed.

2009-05-05 20:02:11 Tree
[b42c75] by Alastair Bridgewater Alastair Bridgewater

1.0.28.15: Build desymlinkification

Changed the object filename computation function to use a different
suffix for files in target-compile mode with the :assem flag.

Changed the src/compiler/assembly/ paths in build-order.lisp-expr to
refer to src/assembly/ instead.

Changed the duplicate-stem check in src/cold/shared.lisp to operate
in terms of target-compile object file names.

Changed both the source and object filename computation functions to
call a new function to remap stem path segments matching "/target/" to
the appropriate per-arch directory.

Removed the code for creating the compiler/assembly/ and target/
symlinks from make-config.sh.

With this, source-location information in SBCL is now correct even
when used against an unbuilt source tree.

2009-05-05 17:11:18 Tree
[577487] by Alastair Bridgewater Alastair Bridgewater

1.0.28.14: Build system refactoring

Moved flag processing as far "inward" as possible when dealing with
compile-stem, reducing the amount of redundant code for parsing out and
passing along boolean keywords based on the presence or absence of a
flag and eliminating some of the keyword arguments to compile-stem.

Added a "mode" parameter to compile-stem to enable determining the
correct compile-file function based on the combination of mode and
flags, further simplifying the interface.

Added new functions for determining the source and object pathnames
for a stem, fixing a longstanding KLUDGE in host-load-stem,
consolidating the three instances of code to compute an object pathname
and the two instances of code to compute a source pathname and
eliminating the rest of the keyword arguments to compile-stem.

2009-05-05 17:10:29 Tree
Older >