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.
Nikodemus Siivola [Thu, 7 Oct 2010 16:40:47 +0000 (16:40 +0000)]
1.0.43.34: differentiate cross-compiler output from target and host
No difference in the end-product, but seeing "x-compiling" in
build-logs makes them easier to read for slow people like me.
That is:
* while building the xc-host messages are from the host compiler.
If the host happens to be SBCL, that means:
; compiling (DEFUN FOO ...)
* while building the target:
; x-compiling (DEFUN FOO ...)
* while building CLOS and contribs on target:
; compiling (DEFUN FOO ...)
Alastair Bridgewater [Thu, 7 Oct 2010 16:37:10 +0000 (16:37 +0000)]
1.0.43.33: ppc: Implement %ARRAY-ATOMIC-INCF/WORD
* Implement new VOP ARRAY-ATOMIC-INCF/WORD
* Add ppc to the appropriate reader coditionals to
enable use of the new VOP.
Alastair Bridgewater [Thu, 7 Oct 2010 16:36:54 +0000 (16:36 +0000)]
1.0.43.32: x86: Implement %ARRAY-ATOMIC-INCF/WORD.
* Implement new VOP ARRAY-ATOMIC-INCF/WORD
* Add x86 to the appropriate reader conditionals to
enable use of the new VOP.
Alastair Bridgewater [Thu, 7 Oct 2010 16:36:37 +0000 (16:36 +0000)]
1.0.43.31: x86-64: Implement %ARRAY-ATOMIC-INCF/WORD.
* Implement new VOP ARRAY-ATOMIC-INCF/WORD
* Add x86-64 to the appropriate reader conditionals to
enable use of the new VOP.
Alastair Bridgewater [Thu, 7 Oct 2010 16:35:53 +0000 (16:35 +0000)]
1.0.43.30: threads: Initial implementation of ATOMIC-INCF for arrays.
* Teach SB-IMPL::EXPAND-ATOMIC-FROB to deal with unboxed
vectors of words as places.
* Define SB-KERNEL:%ARRAY-ATOMIC-INCF/WORD by analogy to
SB-KERNEL:%RAW-INSTACE-ATOMIC-INCF/WORD.
* Add SB-KERNEL:%ARRAY-ATOMIC-INCF/WORD to the VM fndb.
* While we're here, define an interpreter stub for
%ARRAY-ATOMIC-INCF/WORD. %RAW-INSTANCE-ATOMIC-INCF/WORD
still needs one, but that's out of scope right now.
* Note that this is just the arch-independent parts of
ATOMIC-INCF for arrays, the per-arch parts will be separate
commits.
Nikodemus Siivola [Thu, 7 Oct 2010 14:10:40 +0000 (14:10 +0000)]
1.0.43.29: fix OVERAGER-CHARACTER-BUFFERING test-case
* It should be OVEREAGER-CHARACTER-BUFFERING.
* mktemp doesn't allow a suffix after the Xs. Most incidiously, on
Linux it did not even signal an error, but returned "BCL-fifo-XXXXXXX",
causing mkfifo to fail.
Nikodemus Siivola [Wed, 6 Oct 2010 15:50:34 +0000 (15:50 +0000)]
1.0.43.28: DESCRIBE ALWAYS-BOUND declarations for symbols
EOM
Nikodemus Siivola [Wed, 6 Oct 2010 12:48:17 +0000 (12:48 +0000)]
1.0.43.27: DESCRIBE optimization policy qualities for symbols
They should be in the manual too, but this is a start.
Nikodemus Siivola [Wed, 6 Oct 2010 08:59:32 +0000 (08:59 +0000)]
1.0.43.26: propagate-local-call-args for lambdas with optional-dispatches too
Previously we elided the propagation if the lambda had an entry-fun
or an optional-dispatch. The comment notes that we "If the function
has an XEP, then we don't do anything".
There are, however, lambdas with optional-dispatche that don't have
XEPs. Doing propagation for these is required for proper &REST list
type derivation.
Fixes lp#655203.
Nikodemus Siivola [Tue, 5 Oct 2010 08:26:15 +0000 (08:26 +0000)]
1.0.43.25: (LOOP WITH NIL = ...) caused unused variable style-warnings
Patch by Roman Marynchak. Fixes lp#613871.
Always declare #:LOOP-IGNORE variables ignored -- even if they
have initializations.
Nikodemus Siivola [Tue, 5 Oct 2010 07:46:57 +0000 (07:46 +0000)]
1.0.43.24: initialize cold-layouts with source-location NIL, not 0
Fixes lp#458015.
Nikodemus Siivola [Mon, 4 Oct 2010 11:26:10 +0000 (11:26 +0000)]
1.0.43.23: enable let-conversion for open-coded ALIEN-FUNCALL calls
Otherwise DEBUG > SPEED prevents let-conversion, and leads to
%SAP-ALIEN being left in the code.
Fixes lp#654485.
Nikodemus Siivola [Mon, 4 Oct 2010 10:43:39 +0000 (10:43 +0000)]
1.0.43.22: better errors for invalid :EXTERNAL-FORMAT arguments
Affects OPEN & RUN-PROGRAM. String <-> octets conversions did
the right thing already.
Nikodemus Siivola [Mon, 4 Oct 2010 09:51:59 +0000 (09:51 +0000)]
1.0.43.21: typo in COPYING file
Spotted by Jean-Philippe Paradis.
Nikodemus Siivola [Mon, 4 Oct 2010 09:31:02 +0000 (09:31 +0000)]
1.0.43.20: missing NEWS for 1.0.43.19
EOM
Nikodemus Siivola [Mon, 4 Oct 2010 09:27:56 +0000 (09:27 +0000)]
1.0.43.19: don't record source-paths for sub-parts of quoted constants
Fixes the performance-half of lp#654289.
Nikodemus Siivola [Mon, 4 Oct 2010 09:15:32 +0000 (09:15 +0000)]
1.0.43.18: index SB-EXT:*EVALUATOR-MODE* under #'EVAL in the manual
Looking for "Interpreter" in the concept index isn't probably the
first thing most people do.
Fixes the documentation half of lp#654289.
Nathan Froyd [Mon, 4 Oct 2010 02:12:53 +0000 (02:12 +0000)]
1.0.43.17: fix static symbols for array dispatch tables
The array dispatch tables have gone through several renamings. Unfortunately,
the references to the names in compiler/generic/parms.lisp have not been
renamed as well. Do so, and micro-optimize generic array access slightly.
(Optimizing SYMBOL-VALUE on static/global symbols would help as well...)
Alastair Bridgewater [Sun, 3 Oct 2010 14:50:53 +0000 (14:50 +0000)]
1.0.43.16: compiler: Fix non-unicode build.
* Building #-sb-unicode has been broken since 1.0.36.15, due
to a bug in the then-new element type handling for unions of
array types.
* The value originally selected as a sentinel value for not
having processed any of the types in a union was *empty-type*,
which is also the element-type of (array nil (*)), also known
as a subtype of string.
* Simple-string is a union type of (array nil (*)), (array
character (*)), and simple-base-string on sb-unicode targets.
It is a union type of (array nil (*)) and simple-base-string
on non-unicode targets.
* Because the (array nil (*)) came first in the list of
types in the union, and because its element-type was
*empty-type*, the sentinel value, it was ignored when
computing the overall array element type.
* Because the character and base-char types are disjoint,
the overall array element type calculation came up with the
correct answer on unicode builds.
* To correct the problem, select a sentinel value that is
not a type object: NIL.
* From IRC, this morning:
[9:40] * nikodemus hates (array nil)
[9:40] <nikodemus> and it hates me right back
Nikodemus Siivola [Sun, 3 Oct 2010 08:42:37 +0000 (08:42 +0000)]
1.0.43.15: use gcc-3 compiler in Cygwin for runtime too
GCC-4.x can not compile with -mno-cygwin; running gcc -mno-cygwin prints
a message advising to use mingw cross-compiler.
Patch by Kalyanov Dmitry.
Nikodemus Siivola [Sun, 3 Oct 2010 08:37:48 +0000 (08:37 +0000)]
1.0.43.14: typo in asdf-module.mk
* gcc-3, not gcc=3. I wonder how I managed to do that.
Nikodemus Siivola [Thu, 30 Sep 2010 08:43:55 +0000 (08:43 +0000)]
1.0.43.13: "minor fixed for Win32" from Kalyanov Dmitry
* fix run-sbcl.sh for cygwin: need to convert the path.
* fix contrib building for cygwin with GCC 4.x installed: require GCC
3.x since GCC 4.x apparently doesn't do -mno-cygwin.
* PeekConsoleInput's third argument is the number of array in elements,
not bytes. http://msdn.microsoft.com/en-us/library/ms684344%28VS.85%29.aspx
Old usage led to stack overwriting.
Nikodemus Siivola [Thu, 30 Sep 2010 08:40:35 +0000 (08:40 +0000)]
1.0.43.12: edit STYLE for stricter patch submission guidelines
* "git format-patch -1" is superior to plain diffs, since it includes the commit
message as well -- and the patch author is the best person to write it.
* Explain when to use Launchpad and when to use sbcl-devel.
Nikodemus Siivola [Thu, 30 Sep 2010 08:39:39 +0000 (08:39 +0000)]
1.0.43.11: smarter timer expiry
When expiring timers, run all expired timers instead of setting the
system timer again after expiring a single one.
Hopefully addresses lp#375515.
Nikodemus Siivola [Thu, 30 Sep 2010 08:36:38 +0000 (08:36 +0000)]
1.0.43.10: make.sh now accepts --dynamic-space-size=<size> option
...so users can build SBCL with the right default without
touching source.
Fixes lp#383222.
Nikodemus Siivola [Thu, 30 Sep 2010 08:34:41 +0000 (08:34 +0000)]
1.0.43.9: .cvsignore contrib/test-passed
...for the benefit of those still using the CVS. :)
Fixes lp#650558.
Nikodemus Siivola [Thu, 30 Sep 2010 08:33:40 +0000 (08:33 +0000)]
1.0.43.8: ALLOCATION-INFORMATION also provides the actual page
Important for figuring out why garbage is retained and why a page
keeps getting dirty.
Nikodemus Siivola [Thu, 30 Sep 2010 08:25:49 +0000 (08:25 +0000)]
1.0.43.7: update expected test failures on Darwin/x86-64
Bunch of tests in debug.impure.lisp have been passing for a while
now.
Missing NEWS entry for last commit.
Nikodemus Siivola [Thu, 30 Sep 2010 08:23:34 +0000 (08:23 +0000)]
1.0.43.6: fix overeager input-buffer filling by external-format routines
Fixes lp#643686.
Previously the character-input functions returned only after filling the
entire request by fast-read-char-refill, or if an EOF was reached.
This meant that on a pipe we would not receive any input until there
was a buffer's worth of it, or the other end closed.
Not so good. New the drill is:
0, N characters requested.
1. Decode upto N characters from binary buffer to the character
buffer.
2. If any characters were decoded or at EOF, return.
3. Otherwise refill the binary buffer with at most one read()
and goto 1.
Previously at #1 we returned only if the entire request was
satisfied.