Alastair Bridgewater [Fri, 21 Jan 2011 16:40:53 +0000 (16:40 +0000)]
1.0.45.13: physenvanal: Treat all functions without XEPs as being D-X.
* In order for a function to be returned or passed as a parameter,
it must have an XEP.
* Functions without XEPs, therefore, can only be called directly
from within their lexical scope. They are, therefore,
dynamic-extent.
* But wait, you say, they could be called from a closure that is
not dynamic-extent, which clearly shows such an analysis to be false.
* It turns out that this doesn't matter, because the non-dynamic-
extent closure also has to close over the variables passed to the
supposedly-dynamic-extent closure, and that will cause explicit
value-cells to be allocated anyway.
* So, it's a bit of an abuse to say that the functions have dynamic
extent, but it does no harm (and quite a bit of good) to treat them
as if they do.
Cyrus Harmon [Fri, 21 Jan 2011 15:49:47 +0000 (15:49 +0000)]
1.0.45.12: remove spurious reference to ${make_flags} in grovel-features.sh
Cyrus Harmon [Fri, 21 Jan 2011 15:42:00 +0000 (15:42 +0000)]
1.0.45.11: remove inadvertant comment change from last commit
Cyrus Harmon [Fri, 21 Jan 2011 05:53:41 +0000 (05:53 +0000)]
1.0.45.10: tools-for-build/Makefile path fixes
* make include rules non-breaking and use path relative to the path
setup via -I (src/runtime). This should fix things such that both
clean.sh and make.sh should now work.
Cyrus Harmon [Thu, 20 Jan 2011 18:21:37 +0000 (18:21 +0000)]
1.0.45.9: fix building on recent linux
* Recent linux changes caused waitpid foreign symbol to go away so add it to
undefineds and ldso-stubs
* Recent linux linker default flags changes (--as-needed?) caused dlopen and
friends to not be found at link time. Fix the tools-for-build/Makefile
to pick up the build options from Config and fix grovel-features.sh to
put the libs in LDLIBS instead of LDFLAGS
Cyrus Harmon [Thu, 20 Jan 2011 18:12:20 +0000 (18:12 +0000)]
1.0.45.8: fix os_vm_page_size on freebsd, openbsd and osf1
* use BACKEND_PAGE_BYTES instead of getpagesize() to match change to
backend-parms in 1.0.45.7
cracauer [Wed, 19 Jan 2011 22:33:27 +0000 (22:33 +0000)]
1.0.45.7: set *backend-page-bytes* to 32KB
* Setting *backend-page-bytes* to 32KB. I did test runs with
different *backend-page-bytes* values and 32KB clearly came out on top
performance-wise. It also delays (not avoids) the problem of running
out of maximum mappings allowed by current kernel settings.
cracauer [Wed, 19 Jan 2011 22:14:52 +0000 (22:14 +0000)]
1.0.45.5: life: fix slow compile.
* Committing a patch I once got from Nikodemus. Without it my toy
takes more than a week to compile. I've been using this since
November in production, seems to work well. Should probably have made
it into 1.0.44.28.
;;; FASTP is a KLUDGE: SBCL used to update the current-conflict only
;;; for the read-only case, but switched at one point to always
;;; updating it. This generally speeds up the compiler nicely, but
;;; sometimes it causes an infinite loop in the updating machinery,
;;; We cheat by switching of the fast path if it seems we're looping
;;; longer then expected.
Alastair Bridgewater [Wed, 19 Jan 2011 21:59:23 +0000 (21:59 +0000)]
1.0.45.5: life: Propagate implicit value cells through tail-calls.
* When setting up "environment tn conflicts", recurse through
callee environments when processing a block that ends in a tail
local combination and a TN that represents an "implicit" value
cell.
* This closes the hole where a tail-local-call would replace
the stack frame which allocated a closed-over lambda-var, but
the inbound stack frame didn't know about the storage for the
variable, leading to badness. Hopefully the last bug with the
dynamic-extent closure representation changes.
* This patch fixes what 1.0.44.34 was supposed to KLUDGE
around, and finishes fixing lp#681092 (the first half of the
fix being 1.0.44.33).
Juho Snellman [Sun, 19 Dec 2010 01:29:05 +0000 (01:29 +0000)]
1.0.45.4: Revert 1.0.44.34
* Caused CLX compilation to fail, added reduced test case by
Larry Valkama.
Juho Snellman [Mon, 6 Dec 2010 02:33:28 +0000 (02:33 +0000)]
1.0.45.3: Whitespace cleanup
Juho Snellman [Mon, 6 Dec 2010 02:28:02 +0000 (02:28 +0000)]
1.0.45.2: A slightly better error message for malformed reader conditional
* Modified from lp#680173 by Roman Marynchak
Juho Snellman [Mon, 6 Dec 2010 01:59:10 +0000 (01:59 +0000)]
1.0.45: Disables the TRACE :ENCAPSULATE NIL test on Solaris
* Patch by Jim Wise (lp#666885)
Juho Snellman [Mon, 6 Dec 2010 01:25:53 +0000 (01:25 +0000)]
1.0.45: will be tagged as sbcl_1_0_45
Christophe Rhodes [Sat, 27 Nov 2010 21:08:53 +0000 (21:08 +0000)]
1.0.44.36: test case for bug #681092
From the bug report. Also remove needless quotes in some test names.
Alastair Bridgewater [Sat, 27 Nov 2010 03:02:03 +0000 (03:02 +0000)]
1.0.44.35: Use DX-FLET instead of FLET in WITHOUT-{INTERRUPTS,GCING}.
* With the local functions declared to be DYNAMIC-EXTENT, the
new d-x closure analysis can elide the value cells involved
entirely.
* This fixes lp#674458 (introduced in 1.0.44.16).
Alastair Bridgewater [Sat, 27 Nov 2010 03:01:50 +0000 (03:01 +0000)]
1.0.44.34: gtn: KLUDGE the lambda-var assignment to not break tail-calls.
* As an utter KLUDGE, when assigning TNs for closed-over lambda
variables with implicit value-cells, make the TNs component-live
instead of physenv-live. This prevents any possible problems with
the new physenv introduced by a tail-call overwriting the storage
for the variable.
Alastair Bridgewater [Sat, 27 Nov 2010 03:01:34 +0000 (03:01 +0000)]
1.0.44.33: ir2tran: Correctly set up d-x closure values for tail-local-calls.
* Tail-local-call re-uses the current frame. It therefore needs to
use the old-fp value from the current frame in EMIT-PSETQ-MOVES.
* "implicit" value cells need to use the /current/ frame pointer in
EMIT-PSETQ-MOVES to correctly initialize the closure.
* Therefore: Add a new &optional argument to EMIT-PSETQ-MOVES for
the frame-pointer to be used in closure initialization.
* This fixes the obvious part of lp#681092, but unless there is a
guarantee that the stack slots used for the "implicit" value cells
remain unused in the tail-called function then all this does is drive
the bug to become more subtle.
Nikodemus Siivola [Fri, 19 Nov 2010 10:57:30 +0000 (10:57 +0000)]
1.0.44.32: better error reporting for malformed RESTART-CASE clauses
Detect missing lambda-lists.
...and missing -o to canonicalize-whitespace.
Nikodemus Siivola [Fri, 19 Nov 2010 10:54:44 +0000 (10:54 +0000)]
1.0.44.31: fix canonicalize-whitespace
...missing -o from last commit.
Nikodemus Siivola [Fri, 19 Nov 2010 10:13:40 +0000 (10:13 +0000)]
1.0.44.30: don't canonicalize whitespace in ASDF
ASDF isn't that tightly coupled to SBCL anymore -- and munging
the whitespace there just makes comparing SBCL and upstream ASDFs
more difficult.
Nikodemus Siivola [Thu, 18 Nov 2010 13:52:06 +0000 (13:52 +0000)]
1.0.44.29: full warnings for duplicate CASE keys during SBCL build
...and fix the issue revealed.
Thanks to Cyrus Harmon for the heads-up.
Nikodemus Siivola [Thu, 18 Nov 2010 12:02:45 +0000 (12:02 +0000)]
1.0.44.28: allow approximating unions of numeric types
(dummy commit: change described here happened in the last commit really,
but the commit message was subtly wrong and missed the version number)
* Binding *APPROXIMATE-NUMERIC-UNIONS* does that. It must be bound
only by callers of TYPE-UNION that know what they want -- in general
(OR (INTEGER 1 2) (INTEGER 4 4)) => (INTEGER 1 4)
is wrong, as (NOT (INTEGER 1 4)) doesn't include 3. But in special cases
like deriving the return type of a function it can be done.
* Rename MAKE-CANONICAL-UNION-TYPE MAKE-DERIVED-UNION-TYPE, and bind *A-N-U*
there if we start accumulating an overly large union of numeric types.
Definition of "overly large" can be adjusted via
*DERIVED-NUMERIC-UNION-COMPLEXITY-LIMIT*.
* Fixes lp#309448 and the recent compiler performance regression due
to new CONCATENATE deftransform as reported on sbcl-devel.
Nikodemus Siivola [Thu, 18 Nov 2010 11:28:46 +0000 (11:28 +0000)]
allow approximating unions of numeric types
* Binding *APPROXIMATE-NUMERIC-UNIONS* does that. It must be bound
only by callers of TYPE-UNION that know what they want -- in general
(OR (INTEGER 1 2) (INTEGER 3 4)) => (INTEGER 1 4)
is wrong, as (NOT (INTEGER 1 4)) doesn't include 3. But in special cases
like deriving the return type of a function it can be done.
* Rename MAKE-CANONICAL-UNION-TYPE MAKE-DERIVED-UNION-TYPE, and bind *A-N-U*
there if we start accumulating an overly large union of numeric types.
Definition of "overly large" can be adjusted via
*DERIVED-NUMERIC-UNION-COMPLEXITY-LIMIT*.
* Fixes lp#309448 and the recent compiler performance regression due
to new CONCATENATE deftransform as reported on sbcl-devel.
Nikodemus Siivola [Thu, 18 Nov 2010 10:06:30 +0000 (10:06 +0000)]
1.0.44.27: update ASDF to 2.010
Nikodemus Siivola [Tue, 16 Nov 2010 18:18:03 +0000 (18:18 +0000)]
1.0.44.26: more nuanced deprecation framework
DEFINE-DEPRECATED-FUNCTION is the new one-stop shop for the "common"
case of deprecating a function in favor of another one.
...in cases where it is not sufficient, call DEPRECATION-WARNING or
DEPRECATION-ERROR directly from the compiler or other place.
Three stages: :EARLY signals a compile-time style-warning, :LATE
signals a compile-time full warning, :FINAL a compile-time full
warning and a run-time error.
(This is based on the assumption that this is both a sufficient and
desirably nuanced taxonomy -- if more or less is wanted, changing
this later is easy enough.)
SB-EXT:DEPRECATION-CONDITION is the base class of all deprecation
warnings and errors, but it isn't yet documented: once we have a
concensus of sorts on a deprecation protocol/schedule, I will write
the appropriate bits in the manual.
Everything that previously had a deprecation warning is now in :LATE
stage, except for INSTANCE-LAMBDA which is now in :FINAL stage.
Nikodemus Siivola [Tue, 16 Nov 2010 17:57:45 +0000 (17:57 +0000)]
1.0.44.25: don't put function leaves into the source-path when a name is available
#<SB-C::DEFINED-FUN ...> in compiler notes is a bit hard to read, not
to mention obscure.
Nikodemus Siivola [Tue, 16 Nov 2010 15:17:10 +0000 (15:17 +0000)]
1.0.44.24: tweak CAREFUL-EXPAND-MACRO
Don't resignal warnings and style-warnings -- aside from the CMUCL
cross-compiler KLUDGEry. They tend to be intentionally signalled by macro
and compiler-macro authors, and the additional wrapper-text provided by the
resignaling mostly just obfuscates the actual message.
That leaves errors (and the aforementioned KLUDGE.)
For these, less parentheses, more whitespace -- specifically, leave space
around the actual warning/error message, instead of crowding in with the
parenthetical remarks.
Nikodemus Siivola [Mon, 15 Nov 2010 17:43:37 +0000 (17:43 +0000)]
1.0.44.23: replace %METHOD-NAME and %METHOD-LAMBDA-LIST decls with special variables
This not only simplifies PCL code, but fixes a long-standing MOP-bug
and actually gives us SB-PCL:SLOW-METHOD frames in the backtraces.
Previously a fairly trivial MAKE-METHOD-LAMBDA method was enough
to cause
(defmethod foo (x) (return-from foo t))
to break, as MAKE-METHOD-LAMBDA-INTERNAL no longer found the %METHOD-NAME
declaration in the expected place, and hence was unable to add the block
name.
Nikodemus Siivola [Wed, 10 Nov 2010 17:52:05 +0000 (17:52 +0000)]
1.0.44.22: NEWS entry left out from 1.0.44.21.
EOM.
Nikodemus Siivola [Wed, 10 Nov 2010 17:49:30 +0000 (17:49 +0000)]
1.0.44.21: expand ~ in pathnames
~/... => (:ABSOLUTE :HOME ...)
~user/... => (:ABSOLUTE (:HOME "user") ...)
Translation back to NAMESTRING reinstates the tilde, so we retain
read/write consistency.
NATIVE-NAMESTRING is responsible for getting the actual full path
to specified home directory.
This late resolution is necessary to have (open "~/foo") and
(open #p"~/foo") open the same file in compiled code -- regardless
of who compiled the file.
Tilde is treated specially only at the start of the first directory
component: it doesn't need to be escaped anywhere else. After trying
out the various options (escape everywhere, escape in directory
components, escape at the start of directory components, escape at
the start of all components) this seemed both least intrusive and
least ambiguous when documented -- not to mention most backwards
compatible.
Currently escaping the tilde does not work on Windows, but this is due to
current general inability to escape the first directory component on
Windows, since \\ is used also as a directory separator for non-native
pathnames as well. See lp#673625. Test-case added for this.
(:HOME "user") also doesn't work on Windows, which is documented
in the manual.
Nikodemus Siivola [Wed, 10 Nov 2010 17:39:25 +0000 (17:39 +0000)]
1.0.44.20: clarify meaning of make.sh --dynamic-space-size option
EOM.
Alastair Bridgewater [Tue, 9 Nov 2010 19:46:49 +0000 (19:46 +0000)]
1.0.44.19: NEWS: Updates for changes starting at 1.0.44.6.
* EOM.
Alastair Bridgewater [Tue, 9 Nov 2010 19:46:33 +0000 (19:46 +0000)]
1.0.44.18: physenvanal: When checking closure-DXness, handle XEPs reasonably.
* In ANALYZE-INDIRECT-LAMBDA-VARS, treat functionals as being DX if
either they are marked as being DX or they have a FUNCTIONAL-ENTRY-FUN
that is marked as being DX.
* This extends the existing logic to allow functions with XEPs (those
functions callable via the full-call convention) to use the
ANCESTOR-FRAME optimizations.
Alastair Bridgewater [Tue, 9 Nov 2010 19:45:50 +0000 (19:45 +0000)]
1.0.44.17: ir1: Declare UNWIND-PROTECT cleanup functions to be dynamic-extent.
* Since we now have the analysis to do the right thing
for these functions, why not take advantage of it?
Alastair Bridgewater [Tue, 9 Nov 2010 19:45:36 +0000 (19:45 +0000)]
1.0.44.16: ir2tran: Don't try to stack-allocate VALUE-CELLs.
* Explicit VALUE-CELLs are only used if a closure that refers
to a mutable LAMBDA-VAR has indefinite extent, implying that the
reference itself has indefinite extent. In such cases, dynamic
extent allocation of the VALUE-CELL is contraindicated.
* Remove most of the logic from EMIT-MAKE-VALUE-CELL, leaving
only the statistics-tracking (EVENT) and the VOP emission,
forcing the new VALUE-CELL to be heap-allocated.
Alastair Bridgewater [Tue, 9 Nov 2010 19:45:23 +0000 (19:45 +0000)]
1.0.44.15: ir2: Skip value-cell allocation where possible.
* Expose the new ANCESTOR-FRAME VOPs in package-data.lisp-expr.
* When creating TNs for closed-over LAMBDA-VARs with "implicit"
VALUE-CELLs, force the TNs to be allocated on the control-stack,
and to be live over the entire extent of the PHYSENV.
* When translating a REF or SET node for such LAMBDA-VARs from
a NODE in a CLAMBDA with a different PHYSENV, use the new VOPs to
access the LAMBDA-VAR.
* When setting up a closure for such LAMBDA-VARs from a NODE in
a CLAMBDA with the same PHYSENV as the variable, use the new
CLOSURE-INIT-FROM-FP VOP to stash the frame pointer instead of a
VALUE-CELL or the current value of the variable.
* When setting up the closure environment for a local-call that
closes over such a LAMBDA-VAR, and the call is being made from a
NODE in a CLAMBDA with the same PHYSENV as the variable, store the
current frame-pointer instead of a VALUE-CELL or the current value
of the variable.
Alastair Bridgewater [Tue, 9 Nov 2010 19:45:09 +0000 (19:45 +0000)]
1.0.44.14: x86-64: Implement ANCESTOR-FRAME VOPs.
* This is the x86-64 version of the "implicit" VALUE-CELL access
for DYNAMIC-EXTENT closures.
Alastair Bridgewater [Tue, 9 Nov 2010 19:44:53 +0000 (19:44 +0000)]
1.0.44.13: x86: Implement ANCESTOR-FRAME VOPs.
* This is the x86 version of the "implicit" VALUE-CELL access
for DYNAMIC-EXTENT closures.
Alastair Bridgewater [Tue, 9 Nov 2010 19:44:41 +0000 (19:44 +0000)]
1.0.44.12: sparc: Implement ANCESTOR-FRAME VOPs.
* This is the SPARC version of the "implicit" VALUE-CELL access
for DYNAMIC-EXTENT closures.
* This commit is untested, but should work, as it is based on
the PPC changes, which were tested.
Alastair Bridgewater [Tue, 9 Nov 2010 19:44:22 +0000 (19:44 +0000)]
1.0.44.11: ppc: Implement ANCESTOR-FRAME VOPs.
* This is the PPC version of the "implicit" VALUE-CELL access
for DYNAMIC-EXTENT closures.
Alastair Bridgewater [Tue, 9 Nov 2010 19:44:09 +0000 (19:44 +0000)]
1.0.44.10: mips: Implement ANCESTOR-FRAME VOPs.
* This is the MIPS version of the "implicit" VALUE-CELL access
for DYNAMIC-EXTENT closures.
* This commit is untested, but should work, as it is based on
the PPC changes, which were tested.
Alastair Bridgewater [Tue, 9 Nov 2010 19:43:56 +0000 (19:43 +0000)]
1.0.44.9: hppa: Implement ANCESTOR-FRAME VOPs.
* This is the HPPA version of the "implicit" VALUE-CELL access
for DYNAMIC-EXTENT closures.
* This commit is untested, but should work, as it is based on
the PPC changes, which were tested.
Alastair Bridgewater [Tue, 9 Nov 2010 19:43:44 +0000 (19:43 +0000)]
1.0.44.8: alpha: Implement ANCESTOR-FRAME VOPs.
* This is the Alpha version of the "implicit" VALUE-CELL access
for DYNAMIC-EXTENT closures.
* This commit is untested, but should work, as it is based on
the PPC changes, which were tested.
Alastair Bridgewater [Tue, 9 Nov 2010 19:43:30 +0000 (19:43 +0000)]
1.0.44.7: ir1: Set LAMBDA-VAR-EXPLICIT-VALUE-CELL where possible.
* Add a new stage to PHYSENVANAL, after tail-annotation to
fix up indirect (wanting value-cell) LAMBDA-VARs.
* For each non-dynamic-extent CLAMBDA in the component,
mark all of the LAMBDA-VARs as needing an explicit value cell.
* This analysis is correct as far as it goes, but it turns
out that marking CLAMBDAs as being dynamic-extent isn't done
in several cases that one would naively expect it to, thus
defeating most of the point of this analysis.
Alastair Bridgewater [Tue, 9 Nov 2010 19:43:17 +0000 (19:43 +0000)]
1.0.44.6: ir1: Add a new attribute for LAMBDA-VARs that need explicit value-cells.
* Add a new EXPLICIT-VALUE-CELL attribute to the LAMBDA-VAR
attributes.
* Add a new LAMBDA-VAR-EXPLICIT-VALUE-CELL access macro while
we're at it.
Nikodemus Siivola [Mon, 8 Nov 2010 13:03:56 +0000 (13:03 +0000)]
1.0.44.5: teach UNTRACE-1 how to actually untrace unbound functions
Fixes the remainder of lp#667657.
Nikodemus Siivola [Mon, 8 Nov 2010 12:42:01 +0000 (12:42 +0000)]
1.0.44.4: make MAKE-FUNCTIONAL-FROM-TOPLEVEL-LAMBDA build proper XEPs
Bring MAKE-FUNCTIONAL-FROM-TOPLEVEL-LAMBDA into closer alignment with
MAKE-XEP. Specifically, cross-link the underlying function and the
TL-XEP, and mark the TL-XEP for reanalysis.
Fixes lp#310173 and lp#384892:
* Show &REST arguments properly in backtraces.
* Better type-derivation of function result types when the
lambda-list is complex.
Nikodemus Siivola [Mon, 8 Nov 2010 10:00:53 +0000 (10:00 +0000)]
1.0.44.3: better docstring for CONDITION-WAIT
Mention the fact that it might get spurious wakeups.
Nikodemus Siivola [Sun, 7 Nov 2010 01:18:29 +0000 (01:18 +0000)]
1.0.44.2: don't add pointless TYPEP T constraints
Pointless constraints are not only pointless, they also slow things
down for no good reason.
Nikodemus Siivola [Sun, 7 Nov 2010 01:14:39 +0000 (01:14 +0000)]
1.0.44.1: more conservative CONCATENATE open-coding
Don't fully open code for long strings, no matter what policy:
constraint-propagation will go seriously nonlinear.
Also optimize the open-coded form a bit. Use
(SETF (AREF .STRING. (TRULY-THE INDEX (+ .POS. <constant>))) <char>)
...repeat...
(INCF .POS. <constant>)
instead of
(SETF (AREF .STRING .POS.) <char>)
(INCF .POS.)
...repeat...
. Smaller code, easier on the constraint propagation, and a tiny
bit faster too.
Juho Snellman [Sat, 6 Nov 2010 03:29:03 +0000 (03:29 +0000)]
1.0.44: will be tagged as sbcl_1_0_44
Juho Snellman [Sat, 30 Oct 2010 13:30:12 +0000 (13:30 +0000)]
1.0.43.82: Make compiling a MAKE-ARRAY call with a bad keyword list signal warning
* Instead of a crashing inside the guts of the compiler...
* lp#664373, patch by Stas Boukarev
Juho Snellman [Sat, 30 Oct 2010 11:47:11 +0000 (11:47 +0000)]
1.0.43.81: Make :overeager-character-buffering test reap child processes
* Patch lp#665637 from Josh Elsasser
Juho Snellman [Sat, 30 Oct 2010 11:39:14 +0000 (11:39 +0000)]
1.0.43.80: Allow UNTRACE of functions that are no longer defined
* Patch lp#667657 from Attila Lendvai
Nikodemus Siivola [Wed, 20 Oct 2010 14:32:14 +0000 (14:32 +0000)]
1.0.43.79: run-sbcl.sh: print run location to stderr instead of stdout
Allows using run-sbcl.sh for jobs requiring a clean stdout.
Nikodemus Siivola [Wed, 20 Oct 2010 07:18:47 +0000 (07:18 +0000)]
1.0.43.78: fix whitespace damage in pathnames.impure.lisp
Sorry about that.
Nikodemus Siivola [Tue, 19 Oct 2010 17:15:48 +0000 (17:15 +0000)]
1.0.43.77: missing FINALIZE :DONT-SAVE T arguments in contribs
Affects SB-BSD-SOCKETS and SB-SIMPLE-STREAMS.
Fix a typo in NEWS.
Nikodemus Siivola [Tue, 19 Oct 2010 17:00:51 +0000 (17:00 +0000)]
1.0.43.76: sb-posix: prohibit forking with multiple threads running everywhere
Turns out we were only checking this on Darwin.
Nikodemus Siivola [Tue, 19 Oct 2010 14:30:03 +0000 (14:30 +0000)]
1.0.43.75: pathnames: both Unix and Win32 use UNPARSE-PHYSICAL-DIRECTORY
Refactor duplicated code and start using / instead of \ to separate
directories in Lisp namestrings -- less escaping, easier to think
about and read.
Nikodemus Siivola [Tue, 19 Oct 2010 14:01:51 +0000 (14:01 +0000)]
1.0.43.74: WITH-TESTify pathnames.impure.lisp
Better failure tracking for Windows, where the whole file used to
report as a failure.
Nikodemus Siivola [Tue, 19 Oct 2010 13:54:08 +0000 (13:54 +0000)]
1.0.43.73: oops, let's not derive &REST as list quite so hard...
Use PROPAGATE-FROM-SETS so assignments to the variable
are taken into account too.
Nikodemus Siivola [Tue, 19 Oct 2010 10:24:01 +0000 (10:24 +0000)]
1.0.43.72: fix regression from 1.0.43.64
As usual, the original patch was fine, and it was my edits that
wrecked havoc...
Move DTYPE initialization to its proper place: LOOP-OPTIONAL-TYPE has
side-effects and so cannot be called in the place where I so blithely
moved it.
Closes bug 654220 again.
Nikodemus Siivola [Tue, 19 Oct 2010 10:22:40 +0000 (10:22 +0000)]
1.0.43.71: fix regression from 1.0.43.26
PROPAGATE-LOCAL-CALL-ARGS needs to special-case optional dispatch
entry-points after all: our usual approach can load to too narrow
types being derived for &OPTIONAL arguments.
So just deal with &REST args in those cases.
Closes bug 655203 again.
Nikodemus Siivola [Mon, 18 Oct 2010 16:19:15 +0000 (16:19 +0000)]
1.0.43.70: win32: disable a bunch of timer tests
No SIGALRM on Windows, so running these is pretty pointless.
Nikodemus Siivola [Mon, 18 Oct 2010 16:18:32 +0000 (16:18 +0000)]
1.0.43.69: win32: fix build, broken by 1.0.43.62
Need _rmdir in the runtime now.
Nikodemus Siivola [Mon, 18 Oct 2010 14:54:33 +0000 (14:54 +0000)]
1.0.43.68: disassembler: remove unsafe SAP from MAKE-DSTATE
(This was supposed to go in as 1.0.43.66, but somehow the actual
content didn't make it...)
The old code was about as sane and safe as initializing
it with (INT-SAP (RANDOM-ADDRESS)).
Allow DSTATE-SEGMENT-SAP to be NIL till it is properly
initialized.
Nikodemus Siivola [Mon, 18 Oct 2010 11:42:47 +0000 (11:42 +0000)]
1.0.43.67: COERCE: don't trust vector dimensions in unsafe code
Fixes bug 655872.
Our deftransform for COERCE takes advantage of ANSI's allowance
to generate faster code, and open codes
(COERCE X '(SIMPLE-VECTOR 5))
in a way that doesn't verify the length of the simple-vector.
1. Previously we did that for SAFETY < 3, but that doesn't really
fit with our general policy, so enable it only for SAFETY = 0.
2. Make the corresponding DERIVE-TYPE optimizer aware of this, so
that it can drop the dimensions from the type when necessary.
Nikodemus Siivola [Mon, 18 Oct 2010 11:38:56 +0000 (11:38 +0000)]
1.0.43.66: disassembler: remove unsafe SAP from MAKE-DSTATE
The old code was about as sane and safe as initializing
it with (INT-SAP (RANDOM-ADDRESS)).
Allow DSTATE-SEGMENT-SAP to be NIL till it is properly
initialized.
Nikodemus Siivola [Sun, 17 Oct 2010 16:27:53 +0000 (16:27 +0000)]
1.0.43.65: pcl: :DEFINITION-SOURCE / :SOURCE-LOCATION confusion
Caused source-locations for defgenerics not to be recorded properly.
Fixes the only issue remaining open from bug 384801.
Nikodemus Siivola [Sun, 17 Oct 2010 16:00:59 +0000 (16:00 +0000)]
1.0.43.64: loop: remove LOOP-UNIVERSE-ANSI and LOOP-UNIVERSE-IMPLICIT-FOR-REQUIRED
In SBCL both were always T -- delete and simplify code accordingly.
Also delete stale comment referring to LOOP-PREFER-POP feature and
STEP-FUNCTION, which are both long gone.
Patch from Roman Marynchak with minor edits. No changes in
functionality.
Nikodemus Siivola [Sat, 16 Oct 2010 10:06:18 +0000 (10:06 +0000)]
1.0.43.63: storing function documentation under names as well
Since 1.0.29.24 we have stored function documentation exclusively in
the function objects. Turns out this isn't a pure win:
(setf (symbol-function 'foo) #'car)
(setf (documentation 'foo 'function) "Return the name of frobniz.")
should not change the docstring of #'CAR.
So, when setting the docstring of a function name, store it in
RANDOM-DOCUMENTATION instead of in the simple-fun.
Conversely, when looking up the docstring for a function name, first
look in RANDOM-DOCUMENTATION and only then in the bound function.
Nikodemus Siivola [Fri, 15 Oct 2010 10:16:48 +0000 (10:16 +0000)]
1.0.43.62: implement SB-EXT:DELETE-DIRECTORY
Extend MAP-DIRECTORY with :CLASSIFY-SYMLINKS so implementing "delete
symlinks but don't follow them" behaviour for :RECURSIVE T is nice
and easy.
Nikodemus Siivola [Fri, 15 Oct 2010 09:52:58 +0000 (09:52 +0000)]
1.0.43.61: teach docstrings.lisp about parentheses
Kludge to get things like (SIMPLE-ARRAY T (3)) right in docstrings.
Also document SB-EXT:GET-TIME-OF-DAY and SB-EXT:SEED-RANDOM-STATE.
Nikodemus Siivola [Thu, 14 Oct 2010 19:43:23 +0000 (19:43 +0000)]
1.0.43.60: plug (SETF MACRO-FUNCTION) shaped hole in package-locks
The code used to clobber the macro definition before the package-lock
was asserted.
Also adjust package-lock in DEFMACRO to be asserted before any
globaldb infos are clobbered.
Fixes bug 660752.
Nikodemus Siivola [Thu, 14 Oct 2010 19:36:59 +0000 (19:36 +0000)]
1.0.43.59: fix DEFSETF to reject non-symbols as functions names
The short form of DEFSETF requires the second argument to be a
symbol. Added the appropriate check and a test case.
See also the section 5.3 in CLHS.
Patch by Roman Marynchak.
Nikodemus Siivola [Thu, 14 Oct 2010 16:43:32 +0000 (16:43 +0000)]
1.0.43.58: ignore ASDF source registries when building contribs
Fixes bug 659105.
Nikodemus Siivola [Thu, 14 Oct 2010 16:32:51 +0000 (16:32 +0000)]
1.0.43.57: better handling of derived function types
Fixes bug 657499, and improves the earlier fix of 655126.
* Sort out TYPE vs. DEFINED-TYPE in FIND-GLOBAL-FUN:
** TYPE is the declarared type, OR the derived type iff
*derive-function-types* is true, no ftype has been declared,
we're not explicitly late-binding, and the function is not
NOTINLINE.
** DEFINED-TYPE is the derived type, or FUNCTION if the function has
been declared NOTINLINE or we're late-binding.
Previously TYPE (which is what the rest of the system trusts
implcitly) was the derived type for functions in the same file
not declared NOTINLINE.
* ASSERT-CALL-TYPE can now be used in "untrusted" cases as well:
argument types are asserted as before, but instead of using
DERIVE-NODE-TYPE to annotate the function LVAR with its type, we
instead assert the return-type when appropriate.
* VALIDATE-CALL-TYPE is now called with DEFINED-TYPE from
IR1-OPTIMIZE-COMBINATION, not
IR1-CONVERT-COMBINATION-CHECKING-TYPE: the DEFINED-TYPE may be used
there in an untrusted call to ASSERT-CALL-TYPE.
Also keep track of the leaves whose DEFINED-TYPE we have asserted,
so that we won't do duplicate work. New slot in COMBINATION:
TYPE-VALIDATED-FOR-LEAF is utilized for this.
* LEAF-WHERE-FROM can now also be :DEFINED-HERE, meaning the
definition originates in the file being compiled -- this
information is used by VALIDATE-CALL-TYPE, and filled in by
FIND-FREE-FUN and FIND-GLOBAL-FUN.
* Adjust the tests for 655126 to account for full warnings
in case *derive-function-types* and self-calls.
Nikodemus Siivola [Thu, 14 Oct 2010 11:40:39 +0000 (11:40 +0000)]
1.0.43.56: make %INSTANCE-TYPEP always-translatable
One way to make an SBCL that builds but cannot build itself is
to change the compiler so that it fails to eliminate a full call
to %INSTANCE-TYPEP.
This doesn't change that, but at least makes such hosts fail in a
place where the issue is easier to figure out than hitting "undefined
function: %INSTANCE-TYPEP" during cold-init.
Nikodemus Siivola [Thu, 14 Oct 2010 11:16:45 +0000 (11:16 +0000)]
1.0.43.55: move FILE-COMPILE to compiler-test-utils.lisp
Neater this way, and we should probably be using it in a few
other places too.
Nikodemus Siivola [Thu, 14 Oct 2010 10:59:34 +0000 (10:59 +0000)]
1.0.43.54: .gitignore tweaking
Ignore *.diff, *.patch, customize-backend-subfeatures.*.
Change customize-target-features.lisp to customize-target-features.*.
Nikodemus Siivola [Thu, 14 Oct 2010 10:57:29 +0000 (10:57 +0000)]
1.0.43.53: less CPU-speed sensitive test for bug 654289
Instead of hardcoding a time limit, compile bits of code with
different sized constants, and compare the times in relation
to each other.
Nikodemus Siivola [Wed, 13 Oct 2010 15:07:29 +0000 (15:07 +0000)]
1.0.43.52: correct char-size for :EXTERNAL-FORMAT :DEFAULT
Fixes bug 657183.
Make picking the char-size part of picking input/output routines,
and make set-fd-stream-routines set FD-STREAM-CHAR-SIZE from it.
For cleanliness sake, don't ever construct an FD-STREAM with an
inconsistent external-format and char-size -- meaning the default
external-format for the FD-STREAM structure cannot be :DEFAULT.
...this should not matter, but in case someone inspects an unfinished
stream instance, at least things make a bit more sense.
Nikodemus Siivola [Wed, 13 Oct 2010 13:24:26 +0000 (13:24 +0000)]
1.0.43.51: disable get-protocol-by-name/error test on threaded FreeBSD
Workaround for bug 659857.
At least some versions of FreeBSD return -1 and errno=EINTR for
unknown protocols.
Nikodemus Siivola [Wed, 13 Oct 2010 13:13:35 +0000 (13:13 +0000)]
1.0.43.50: better function signature checking for self-calls
Fixes bug 655126.
Allow passing a lambda-list to GET-DEFINED-FUN, and when provided
one, make up an FTYPE based on that lambda-list.
Nikodemus Siivola [Tue, 12 Oct 2010 14:42:53 +0000 (14:42 +0000)]
1.0.43.49: (SETF FDEFINITION) and (SETF SYMBOL-FUNCTION) should clear derived ftype
Fixes 659220.
Just call CLEAR-INFO unless the type is declared.
Paul Khuong [Tue, 12 Oct 2010 05:36:38 +0000 (05:36 +0000)]
1.0.43.48: Unbreak fast-ash-c/fixnum=>fixnum on x86
* ZEROIZE is an x86-64ism (introduced in 1.0.43.47).
Paul Khuong [Tue, 12 Oct 2010 05:10:07 +0000 (05:10 +0000)]
1.0.43.47: Unfix ASH of constant shift on x86oids
* The fixnum=>fixnum VOPs for ASH used to explicitly handle shifts greater
than the word length by computing a zero instead. These should be
constant-folded away in IR1 now.
* 1.0.43.45 incidentally fixed lp #309063 (which is what the fix above
was used for). Add a test case, update NEWS, and note the optimizations
committed in 1.0.43.{42,43,47}.
Paul Khuong [Tue, 12 Oct 2010 04:52:24 +0000 (04:52 +0000)]
1.0.43.46: Simplify some type tests to EQL comparisons
* When the type to test is a singleton type, check for EQLity
against the one value inhabiting that type.
Paul Khuong [Tue, 12 Oct 2010 04:50:24 +0000 (04:50 +0000)]
1.0.43.45: More type-directed constant folding
* 1.0.30.2 introduced logic to use MEMBER-TYPEs during constant
propagation. This commit uses SINGLETON-TYPE-P to extend that
logic to more types (NUMERIC and CHARACTER-SET).
* This exposes additional constant-folding opportunities in
src/code/bit-bash.lisp; the necessary definitions are now available
at compile-time.
Paul Khuong [Tue, 12 Oct 2010 04:46:02 +0000 (04:46 +0000)]
1.0.43.44: New type method: TYPE-SINGLETON-P
* The new type method is used to Determine whether a type is inhabited
by exactly one object. If so, it returns and the object. Otherwise,
it returns NIL, NIL.
* It is only defined for MEMBER, CHARACTER-SET and NUMERIC -TYPEs so
far.
* The default is to always return NIL, NIL.
Paul Khuong [Tue, 12 Oct 2010 04:43:48 +0000 (04:43 +0000)]
1.0.43.43: Merge more equivalent branches together
* Recognize cases of (if foo [leaf] [same leaf]), and compile the conditional
branch away. We used to only perform something similar to that when the
branches jumped to exactly the same block. We now detect simple cases of
equivalent blocks.
Paul Khuong [Tue, 12 Oct 2010 04:41:16 +0000 (04:41 +0000)]
1.0.43.42: Constant fold IFs before performing IF/IF conversion
IF/IF-conversion is somewhat similar to "the trick": when a conditional
branches on an lvar that may be written to by multiple nodes, duplicate
the conditional after each of the writers.
We used to perform that before constant-folding IFs. We now do the
reverse: it's always better to completely flush the branch away than to
duplicate it.
Nikodemus Siivola [Mon, 11 Oct 2010 14:29:13 +0000 (14:29 +0000)]
1.0.43.41: TYPE-ERROR printing tweak for *PRINT-ESCAPE* = T
Print as #<TYPE-ERROR exptected-type: SOME-TYPE datum: SOME-DATUM> when
possible.
Virtually every time I see a TYPE-ERROR printed with *PRINT-ESCAPE* =
T I need to go look for the place where it is printed in order to see
what the actual problem is -- and I don't think I'm the only one.
This is hopefully one annoyance less.
Juho Snellman [Sun, 10 Oct 2010 00:34:11 +0000 (00:34 +0000)]
1.0.43.40: Allow use of unmangled win32 function names
* Patch lp#657117 from Kalyanov Dmitry
Nikodemus Siivola [Sat, 9 Oct 2010 23:09:26 +0000 (23:09 +0000)]
1.0.43.39: proclaimed function types and NOTINLINE
Declaring a function NOTINLINE no longer causes the compiler
to ignore its proclaimed FTYPE.
Trusting the proclaimed type is harmless, as NOTINLINE calls
are compiled just like regular (as opposed to inlined) calls.
Nikodemus Siivola [Sat, 9 Oct 2010 22:33:41 +0000 (22:33 +0000)]
1.0.43.38: some PPRINT-LOGICAL-BLOCK issues
:PER-LINE-PREFIX was multiply-evaluated, and both it, :PREFIX, and :SUFFIX
caused code-deletion notes to be issued.
Stick a ONCE-ONLY in there, and use
(declare (string ...))
instead of
(unless (typep x 'string) (error ...))
Python derives the fact that the argments must be strings by the time
the TYPEP call occurs from the call to START-LOGICAL-BLOCK, hence the
code-deletion note for the call to ERROR.
Nikodemus Siivola [Fri, 8 Oct 2010 19:45:15 +0000 (19:45 +0000)]
1.0.43.37: update ASDF to 2.009
Alastair Bridgewater [Thu, 7 Oct 2010 16:53:12 +0000 (16:53 +0000)]
1.0.43.36: threads: Add ATOMIC-INCF improvement notification to NEWS.
* Updated NEWS, that is all.
Nikodemus Siivola [Thu, 7 Oct 2010 16:49:30 +0000 (16:49 +0000)]
1.0.43.35: fix make-host-2.lisp from 1.0.43.34
THAT was not supposed to go in. Grr. Sorry.