sbcl.git
13 years ago1.0.43.58: ignore ASDF source registries when building contribs
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.

13 years ago1.0.43.57: better handling of derived function types
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.

13 years ago1.0.43.56: make %INSTANCE-TYPEP always-translatable
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.

13 years ago1.0.43.55: move FILE-COMPILE to compiler-test-utils.lisp
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.

13 years ago1.0.43.54: .gitignore tweaking
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.*.

13 years ago1.0.43.53: less CPU-speed sensitive test for bug 654289
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.

13 years ago1.0.43.52: correct char-size for :EXTERNAL-FORMAT :DEFAULT
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.

13 years ago1.0.43.51: disable get-protocol-by-name/error test on threaded FreeBSD
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.

13 years ago1.0.43.50: better function signature checking for self-calls
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.

13 years ago1.0.43.49: (SETF FDEFINITION) and (SETF SYMBOL-FUNCTION) should clear derived ftype
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.

13 years ago1.0.43.48: Unbreak fast-ash-c/fixnum=>fixnum on x86
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).

13 years ago1.0.43.47: Unfix ASH of constant shift on x86oids
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}.

13 years ago1.0.43.46: Simplify some type tests to EQL comparisons
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.

13 years ago1.0.43.45: More type-directed constant folding
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.

13 years ago1.0.43.44: New type method: TYPE-SINGLETON-P
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.

13 years ago1.0.43.43: Merge more equivalent branches together
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.

13 years ago1.0.43.42: Constant fold IFs before performing IF/IF conversion
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.

13 years ago1.0.43.41: TYPE-ERROR printing tweak for *PRINT-ESCAPE* = T
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.

13 years ago1.0.43.40: Allow use of unmangled win32 function names
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

13 years ago1.0.43.39: proclaimed function types and NOTINLINE
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.

13 years ago1.0.43.38: some PPRINT-LOGICAL-BLOCK issues
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.

13 years ago1.0.43.37: update ASDF to 2.009
Nikodemus Siivola [Fri, 8 Oct 2010 19:45:15 +0000 (19:45 +0000)]
1.0.43.37: update ASDF to 2.009

13 years ago1.0.43.36: threads: Add ATOMIC-INCF improvement notification to NEWS.
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.

13 years ago1.0.43.35: fix make-host-2.lisp from 1.0.43.34
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.

13 years ago1.0.43.34: differentiate cross-compiler output from target and host
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 ...)

13 years ago1.0.43.33: ppc: Implement %ARRAY-ATOMIC-INCF/WORD
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.

13 years ago1.0.43.32: x86: Implement %ARRAY-ATOMIC-INCF/WORD.
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.

13 years ago1.0.43.31: x86-64: Implement %ARRAY-ATOMIC-INCF/WORD.
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.

13 years ago1.0.43.30: threads: Initial implementation of ATOMIC-INCF for arrays.
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.

13 years ago1.0.43.29: fix OVERAGER-CHARACTER-BUFFERING test-case
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.

13 years ago1.0.43.28: DESCRIBE ALWAYS-BOUND declarations for symbols
Nikodemus Siivola [Wed, 6 Oct 2010 15:50:34 +0000 (15:50 +0000)]
1.0.43.28: DESCRIBE ALWAYS-BOUND declarations for symbols

 EOM

13 years ago1.0.43.27: DESCRIBE optimization policy qualities for symbols
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.

13 years ago1.0.43.26: propagate-local-call-args for lambdas with optional-dispatches too
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.

13 years ago1.0.43.25: (LOOP WITH NIL = ...) caused unused variable style-warnings
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.

13 years ago1.0.43.24: initialize cold-layouts with source-location NIL, not 0
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.

13 years ago1.0.43.23: enable let-conversion for open-coded ALIEN-FUNCALL calls
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.

13 years ago1.0.43.22: better errors for invalid :EXTERNAL-FORMAT arguments
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.

13 years ago1.0.43.21: typo in COPYING file
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.

13 years ago1.0.43.20: missing NEWS for 1.0.43.19
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

13 years ago1.0.43.19: don't record source-paths for sub-parts of quoted constants
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.

13 years ago1.0.43.18: index SB-EXT:*EVALUATOR-MODE* under #'EVAL in the manual
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.

13 years ago1.0.43.17: fix static symbols for array dispatch tables
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...)

13 years ago1.0.43.16: compiler: Fix non-unicode build.
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

13 years ago1.0.43.15: use gcc-3 compiler in Cygwin for runtime too
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.

13 years ago1.0.43.14: typo in asdf-module.mk
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.

13 years ago1.0.43.13: "minor fixed for Win32" from Kalyanov Dmitry
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.

13 years ago1.0.43.12: edit STYLE for stricter patch submission guidelines
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.

13 years ago1.0.43.11: smarter timer expiry
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.

13 years ago1.0.43.10: make.sh now accepts --dynamic-space-size=<size> option
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.

13 years ago1.0.43.9: .cvsignore contrib/test-passed
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.

13 years ago1.0.43.8: ALLOCATION-INFORMATION also provides the actual page
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.

13 years ago1.0.43.7: update expected test failures on Darwin/x86-64
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.

13 years ago1.0.43.6: fix overeager input-buffer filling by external-format routines
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.

13 years ago1.0.43.5: add :EXTERNAL-FORMAT argument to RUN-PROGRAM
Nikodemus Siivola [Thu, 30 Sep 2010 08:21:22 +0000 (08:21 +0000)]
1.0.43.5: add :EXTERNAL-FORMAT argument to RUN-PROGRAM

 Selects the encoding for :INPUT, :OUTPUT, and :ERROR :STREAMs.

13 years ago1.0.43.4: deal with interrupted open(2) calls
Nikodemus Siivola [Thu, 30 Sep 2010 07:38:07 +0000 (07:38 +0000)]
1.0.43.4: deal with interrupted open(2) calls

 Particularly if the other end is a FIFO, it isn't all that
 hard to get interrupted before open() completes.

13 years ago1.0.43.3: make (LOAD-TIME-VALUE (THE (VALUES FIXNUM) 42)) work again
Nikodemus Siivola [Thu, 30 Sep 2010 07:15:57 +0000 (07:15 +0000)]
1.0.43.3: make (LOAD-TIME-VALUE (THE (VALUES FIXNUM) 42)) work again

 An explicit THE + VALUES broke LOAD-TIME-VALUE.

 FIxes lp#646796.

13 years ago1.0.43.2: remove bashishm from source-distribution.sh
Nikodemus Siivola [Thu, 30 Sep 2010 07:12:47 +0000 (07:12 +0000)]
1.0.43.2: remove bashishm from source-distribution.sh

 Thanks to Jim Wise, lp#644702.

13 years ago1.0.43.1: better handling of complex array types in fill-pointer ops
Nikodemus Siivola [Thu, 30 Sep 2010 07:03:25 +0000 (07:03 +0000)]
1.0.43.1: better handling of complex array types in fill-pointer ops

 Derive the fact that the result of MAKE-ARRAY is (NOT SIMPLE-ARRAY)
 when possible.

 Instead of DEFOPTIMIZERs asserting that various functions need a
 complex array, put the right type in the DEFKNOWNs instead.

 Also remove a few of redundant typechecks: FILL-POINTER ->
 ARRAY-HAS-FILL-POINTER call path does all the checks any of the other
 operations need.

 Fixes lp#309130.

13 years ago1.0.43: will be tagged as sbcl_1_0_43
Juho Snellman [Thu, 30 Sep 2010 01:07:36 +0000 (01:07 +0000)]
1.0.43: will be tagged as sbcl_1_0_43

13 years ago1.0.42.54: #!+darwin the nanosleep hack
Juho Snellman [Mon, 27 Sep 2010 23:42:11 +0000 (23:42 +0000)]
1.0.42.54: #!+darwin the nanosleep hack

     * At least on linux the the output value of nanosleep can drift
       up a little bit compared to the input. Combined with the hack
       for the darwin nanosleep problems, this caused early exits
       from SLEEP.

13 years ago1.0.42.53: *TTY* stream needs to serve events as well
Nikodemus Siivola [Mon, 27 Sep 2010 15:17:08 +0000 (15:17 +0000)]
1.0.42.53: *TTY* stream needs to serve events as well

 Regression from 1.0.42.43.

13 years ago1.0.42.52: fix Windows build
Nikodemus Siivola [Tue, 21 Sep 2010 16:47:21 +0000 (16:47 +0000)]
1.0.42.52: fix Windows build

 Kludge around FD_SETSIZE on Windows.

13 years ago1.0.42.51: disable split html manual building
Nikodemus Siivola [Tue, 21 Sep 2010 15:29:10 +0000 (15:29 +0000)]
1.0.42.51: disable split html manual building

 Makeinfo tries to generate an overly long filename for one of the
 split parts (SB-BSD-SOCKETS:SOCKET-MAKE-STREAM, to be exact),
 breaking the documentation build.

 Fixes lp#643636. Regression since 1.0.42.

13 years ago1.0.42.50: workaround a Darwin nanosleep() bug
Nikodemus Siivola [Tue, 21 Sep 2010 13:10:37 +0000 (13:10 +0000)]
1.0.42.50: workaround a Darwin nanosleep() bug

 Fixes lp#640516.

 It turns out that on Darwin, if a nanosleep() call is interrupted,
 and the signal handler takes longer than the requested sleep time
 was, then the call will return with EINTR and (unsigned)-1 in the
 remaining seconds.

 Since we call nanosleep() again when it returns with EINTR with the
 remaining time, this would cause us to sleep ~136 years...

 So, check that the remainder is not increasing before calling
 nanosleep() again.

 Many, many thanks to Joe Lobraco who reported and diagnosed the
 issue.

13 years ago1.0.42.49: fix (SETF DOCUMENTATION) for macros
Nikodemus Siivola [Tue, 21 Sep 2010 11:23:32 +0000 (11:23 +0000)]
1.0.42.49: fix (SETF DOCUMENTATION) for macros

 Fixes lp#643958.

 Patch Stas Boukarev, test-case by yours truly.

 Nice and simple, so going in mid-freeze.

13 years ago1.0.42.48: more contextual CAREFUL-EXPAND-MACRO messages
Nikodemus Siivola [Mon, 20 Sep 2010 08:24:50 +0000 (08:24 +0000)]
1.0.42.48: more contextual CAREFUL-EXPAND-MACRO messages

 Differentiate between compiler-macroexpansion and macroexpansion in
 the warning messages.

13 years ago1.0.42.47: fix regressions from 1.0.42.46.
Nikodemus Siivola [Mon, 20 Sep 2010 08:23:52 +0000 (08:23 +0000)]
1.0.42.47: fix regressions from 1.0.42.46.

 ...need to learn read the test suite output properly...

13 years ago1.0.42.46: style-warn users about READ-FROM-STRING &optional gotcha
Nikodemus Siivola [Mon, 20 Sep 2010 07:33:24 +0000 (07:33 +0000)]
1.0.42.46: style-warn users about READ-FROM-STRING &optional gotcha

 Check -- at runtime if need be! -- if the EOF-ERROR-P argument to
 READ-FROM-STRING is one of its keyword arguments, and signal a
 style-warning explaining the issue if so,

 Since the runtime check surprisingly has a measurable cost, add a
 compiler-macro that

  * signals the style-warning at compile-time.

  * rewrites the call into required-args-only form.

 Which actually nets us a 2% speedup... perhaps we should consider
 more widespread rewriting of &KEY calls into required-args-only form.

13 years ago1.0.42.45: more descriptive errors for exceeding FD_SETSIZE
Nikodemus Siivola [Sun, 19 Sep 2010 21:33:31 +0000 (21:33 +0000)]
1.0.42.45: more descriptive errors for exceeding FD_SETSIZE

 Instead of a type-error whose meaning is pretty opaque to an average
 user, signal an error with a descriptive message.

 Add bug numbers to the previous select()/poll() changes in NEWS.

13 years ago1.0.42.44: oops, this bit was not supposed to go in...
Nikodemus Siivola [Sun, 19 Sep 2010 20:11:58 +0000 (20:11 +0000)]
1.0.42.44: oops, this bit was not supposed to go in...

13 years ago1.0.42.43: FD-STREAMS no longer hook into SERVE-EVENT by default
Nikodemus Siivola [Sun, 19 Sep 2010 20:08:47 +0000 (20:08 +0000)]
1.0.42.43: FD-STREAMS no longer hook into SERVE-EVENT by default

 * SOCKET-MAKE-STREAM, and MAKE-FD-STREAM have new keyword
   argument :SERVE-EVENTS which requests that blocking IO on the
   stream should dispatch to SERVE-EVENT. For SOCKET-MAKE-STREAM the
   default is T, for MAKE-FD-STREAM the default it NIL.

 * Don't call SYSREAD-MAY-BLOCK-P at all unless we need to to handle
   events or check for timeout.

 * Make WAIT-UNTIL-FD-USABLE use UNIX-SIMPLE-POLL instead of going
   into SUB-SERVE-EVENT when appropriate:

   ** Explicit requests to not serve events.

   ** Timeout 0.

   ** No other handlers and no periodic polling function.

 * When FD-STREAM-SERVE-EVENTS is false but write returns EWOULDBLOCK,
   don't queue output but wait till poll(2) says we can go.

 * UNIX-SIMPLE-POLL uses poll() only on platforms where a build-time
   test shows it to exist and work as expected. Elsewhere it is built
   on top of good 'ol select().

13 years ago1.0.42.42: hack around *AUTO-EVAL-IN-FRAME* issues
Nikodemus Siivola [Sun, 19 Sep 2010 19:09:21 +0000 (19:09 +0000)]
1.0.42.42: hack around *AUTO-EVAL-IN-FRAME* issues

 When frame doesn't have sufficient debug information and
 *AUTO-EVAL-IN-FRAME* is true -- the default -- the debugger REPL
 becomes useless in the frame. Oops.

 So, in those cases punt to regular EVAL instead -- which is the right
 thing most of the time. To avoid confusion by DWIM, tell the user
 when punting to global context.

13 years ago1.0.42.41: use poll(2) instead of select(2) in SYSREAD-MAY-BLOCK-P
Nikodemus Siivola [Sun, 19 Sep 2010 14:14:15 +0000 (14:14 +0000)]
1.0.42.41: use poll(2) instead of select(2) in SYSREAD-MAY-BLOCK-P

 Calling select() with a single FD is just waste.

 This also means that we don't use select() outside of serve-event,
 paving way to having more fds open than FD_SETSIZE allows.

13 years ago1.0.42.40: replace hardcoded FD-SETSIZE with a groveled one
Nikodemus Siivola [Sun, 19 Sep 2010 13:36:30 +0000 (13:36 +0000)]
1.0.42.40: replace hardcoded FD-SETSIZE with a groveled one

13 years ago1.0.42.39: workaround for lp#308914
Nikodemus Siivola [Sun, 19 Sep 2010 13:07:37 +0000 (13:07 +0000)]
1.0.42.39: workaround for lp#308914

 Detect and escape from endless loops in ORDER-UVL-SETS.

13 years ago1.0.42.38: fix SB-INTROSPECT:VALID-FUNCTION-NAME-P docstring
Nikodemus Siivola [Sun, 19 Sep 2010 12:41:58 +0000 (12:41 +0000)]
1.0.42.38: fix SB-INTROSPECT:VALID-FUNCTION-NAME-P docstring

 lp#641896

13 years ago1.0.42.37: use more NAMED-LAMBDAs in PCL generated code
Nikodemus Siivola [Mon, 13 Sep 2010 11:04:00 +0000 (11:04 +0000)]
1.0.42.37: use more NAMED-LAMBDAs in PCL generated code

 Previously backtraces and profiles showed eg.

   (LAMBDA (.ARG0. .ARG1. .ARG2.))

 for effective method functions, and

   (LAMBDA (VALUE))

 for slot typechecking functions.

 Use NAMED-LAMBDA to name these sensibly:

  (DFUN <generic-function-name>)

  (SLOT-TYPECHECK <class-name> <slot-name>)

13 years ago1.0.42.36: micro-optimize x86 assembly comparison VOPs
Nathan Froyd [Fri, 10 Sep 2010 23:06:09 +0000 (23:06 +0000)]
1.0.42.36: micro-optimize x86 assembly comparison VOPs

No need to load the address of the assembly routine into a temporary
register, as we do on x86-64.  We can jump to the address directly
with CALL.

13 years ago1.0.42.35: tests: Update :fails-on clause for a test
Alastair Bridgewater [Wed, 8 Sep 2010 01:12:16 +0000 (01:12 +0000)]
1.0.42.35: tests: Update :fails-on clause for a test

  * Test dynamic-extent.impure.lisp / BUG-586105 expects that both
lists and vectors can be stack-allocated, but not all platforms
support this.  Fortunately, the platforms that do support it also
have a feature conditional for it.  Added a :fails-on clause to
the test.

13 years ago1.0.42.34: threads: Consolidate thread-specific static symbols
Alastair Bridgewater [Wed, 8 Sep 2010 01:04:41 +0000 (01:04 +0000)]
1.0.42.34: threads: Consolidate thread-specific static symbols

  * The x86, x86-64 and ppc backends all had the same three static
symbols used for threading.  Rather than having each backend add
the same symbols to the static symbol list, add them to the list
of common static symbols.  In the unlikely(?) event that we commit
a threaded port to mainline that doesn't use these symbols, we can
revisit this change.

13 years ago1.0.42.33: ppc: Improve pseudo-atomic implementation
Alastair Bridgewater [Sun, 5 Sep 2010 17:01:01 +0000 (17:01 +0000)]
1.0.42.33: ppc: Improve pseudo-atomic implementation

  * The runtime (ppc-assem.S) used a shorter, more concise
    sequence of instructions for testing pseudo-atomic than the
    compiler (ppc/macros.lisp) did.  Altered the compiler to use
    the same sequence as the runtime.

  * Both the compiler and the runtime used magic numbers in the
    pseudo-atomic sequence instead of using named constants.
    Fixed, using the existing named constants.

13 years ago1.0.42.32: fix for lp#611361
Christophe Rhodes [Sat, 4 Sep 2010 08:01:27 +0000 (08:01 +0000)]
1.0.42.32: fix for lp#611361

Only omit IGNORE declarations for required method parameters, not all
parameters.

13 years ago1.0.42.31: fix build with clisp 2.49
Nikodemus Siivola [Fri, 3 Sep 2010 13:28:34 +0000 (13:28 +0000)]
1.0.42.31: fix build with clisp 2.49

 Patch by Josh Elsasser, lp#629144.

 Previously, if a clisp 2.49 host was used, the build failed during
 make-host-1 in src/code/cross-sap.lisp with several "redefining SETF
 expander" errors. The same *suppress-check-redefinition* fix used in
 make-host-2 is enough to placate clisp and allow the build to finish
 successfully.

13 years ago1.0.42.30: missing docstring for GET-PROTOCOL-BY-NAME
Nikodemus Siivola [Fri, 3 Sep 2010 13:24:49 +0000 (13:24 +0000)]
1.0.42.30: missing docstring for GET-PROTOCOL-BY-NAME

 Patch by Jim Wise, lp#628885.

13 years ago1.0.42.29: tweak run-program.impure.lisp
Nikodemus Siivola [Fri, 3 Sep 2010 13:21:57 +0000 (13:21 +0000)]
1.0.42.29: tweak run-program.impure.lisp

 Make READ-LINEISH less bogus.

 Fixes lp#628887, I hope.

13 years ago1.0.42.28: package locks to guard against DEFMACRO -> DEFUN and vice-versa
Nikodemus Siivola [Fri, 3 Sep 2010 13:01:32 +0000 (13:01 +0000)]
1.0.42.28: package locks to guard against DEFMACRO -> DEFUN and vice-versa

 * Fixes lp#576637.

 * PROCLAIM-AS-FUN-NAME is called quite often at compile time, but actually
   does something we care about only rarely -- assert the lock only when
   something changes, so that

    (WITHOUT-PACKAGE-LOCKS (DEFUN LOCKED:FOO ...))

   keeps working for the common case.

 * Similar logic in %DEFMACRO.

 * Some tests adjusted.

13 years ago1.0.42.27: cleanup: My last commit was supposed to be .27
Alastair Bridgewater [Fri, 3 Sep 2010 05:47:27 +0000 (05:47 +0000)]
1.0.42.27: cleanup: My last commit was supposed to be .27

  * My export shell script had a bug, introduced during
refactoring, causing it to read the wrong version.lisp-expr
to determine the old version number, thus causing the
version number to not be incremented after the first commit
in the series.  What I get for trying to be too clever.

  * Updated version.lisp-expr, gave an explanatory comment
in the commit message (this commit message).

13 years ago1.0.42.26: git: Add a couple of new patterns to .gitignore
Alastair Bridgewater [Fri, 3 Sep 2010 00:32:49 +0000 (00:32 +0000)]
1.0.42.26: git: Add a couple of new patterns to .gitignore

  * One or more tests tend to create .so files in the tests/
directory.  Ignore "tests/*.so".

  * The process of building the manual produces a couple of .html
files in the doc/manual/ directory.  Ignore "doc/manual/*.html".

13 years ago1.0.42.26: tests: Fix broken :fails-on clause for a dynamic-extent.impure test
Alastair Bridgewater [Fri, 3 Sep 2010 00:26:50 +0000 (00:26 +0000)]
1.0.42.26: tests: Fix broken :fails-on clause for a dynamic-extent.impure test

  * Test case dynamic-extent.impure.lisp / (:NO-CONSING
:HASH-TABLES) fails on threaded PPC targets, but because the
clause was not quoted, it evaluated to all threaded targets,
which was wrong.  My mistake, too.

  * Added NEWS entry forgotten in 1.0.42.23, also my mistake.

13 years ago1.0.42.25: check parent-lambdas in defined-fun-functional
Nikodemus Siivola [Thu, 2 Sep 2010 14:33:05 +0000 (14:33 +0000)]
1.0.42.25: check parent-lambdas in defined-fun-functional

 * Fixes lp#308951.

 * REFERENCE-LEAF could gain access to a functional in a strange
   lexenv using DEFINED-FUN-FUNCTIONAL, messing up access to bindings.

   Don't return a functional if the current lexenvs parent-lambda chain
   does not hold the parent of the functional.

   Also provides a more elegant fix for MISC.320.

13 years ago1.0.42.24: print symbols with fully qualified names in critical places
Nikodemus Siivola [Thu, 2 Sep 2010 08:14:31 +0000 (08:14 +0000)]
1.0.42.24: print symbols with fully qualified names in critical places

 Patch by Attila Lendvai, lp#622789.

 Less room for package confusion this way.

13 years ago1.0.42.23: x86-64: Fix passing of unboxed complex float arguments.
Alastair Bridgewater [Thu, 2 Sep 2010 00:34:28 +0000 (00:34 +0000)]
1.0.42.23: x86-64: Fix passing of unboxed complex float arguments.

  * This has been broken since 1.0.27.14 (x86oid frame pointer
bias).

  * The "move-arg" VOPs for complex floats required a different
adjustment when being placed relative to the normal frame base
pointer, due to the bias, than when being placed relative to
other base pointers.  Unfortunately, a new requirement was also
added that restricted the appropriate registers for use as
frame base pointers to one, and one which would not normally be
selected, leading to "Unexpected offset" errors.

  * Removed the restriction.

  * The logic in EA-FOR-CXF-STACK is still broken: The frame bias
is only applied when the frame pointer is RSP, which will never
happen, and is not applied when the frame pointer is any other
register.  At the same time, so far as I can tell, the bias seems
to be unneccessary.

  * Bug reported by sykopomp in #lispgames.

13 years ago1.0.42.22: x86-64: Add test case for unboxed complex float arguments.
Alastair Bridgewater [Thu, 2 Sep 2010 00:34:13 +0000 (00:34 +0000)]
1.0.42.22: x86-64: Add test case for unboxed complex float arguments.

  * This has been broken since 1.0.27.14.

13 years ago1.0.42.21: grab-bag of Solaris related fixes
Nikodemus Siivola [Wed, 1 Sep 2010 18:11:09 +0000 (18:11 +0000)]
1.0.42.21: grab-bag of Solaris related fixes

 Patch by Jim Wise, lp#627581.

 * make make-doc.sh work on SunOS (due to old /bin/sh)

 * avoid the struct dirent distrust-length build issue in sb-posix

 * fix an issue in the run-program.ed test

 * add .html to .cvsignore

13 years ago1.0.42.20: use platform-dependent CFLAGS consistently in tests
Nikodemus Siivola [Wed, 1 Sep 2010 17:21:07 +0000 (17:21 +0000)]
1.0.42.20: use platform-dependent CFLAGS consistently in tests

 Patch by Josh Elsasser, lp#615499.

 In his words:

 "Attached is a patch which moves all the duplicated, out-of-sync C
 compiler flag selection in the tests into a single wrapper script.
 When passed a flag like -sbcl-pic or -sbcl-shared, the script will
 decided if -fPIC or -shared/-bundle is needed based on SOFTWARE-TYPE
 and MACHINE-TYPE which SBCL has passed in the environment.

 I tested this on several x86 OSes and a couple PowerPC, as well as
 SunOS on SPARC and OpenBSD on x86-64. For the -sbcl-pic case I have
 verified that -fPIC is needed on OpenBSD-PowerPC, OpenBSD-X86-64,
 SunOS-SPARC and SunOS-X86; the other cases are guesses based on the
 existing reader conditionals. It is not needed on Darwin or Linux on
 PowerPC, or on any x86 OSes I tested aside from SunOS.

 I haven't verified that -arch x86_64 is actually needed on
 Darwin-X86-64, or that something like -m64 isn't needed on other
 X86-64 OSes (aside from OpenBSD)."

13 years ago1.0.42.19: make SB-CONCURRENCY more GC friendly
Nikodemus Siivola [Wed, 1 Sep 2010 16:57:12 +0000 (16:57 +0000)]
1.0.42.19: make SB-CONCURRENCY more GC friendly

 * Patch by "3b", lp#628098.

 * Break chains of detached nodes, so conservativism won't kill us.

13 years ago1.0.42.18: let's take that again
Nikodemus Siivola [Wed, 1 Sep 2010 16:09:24 +0000 (16:09 +0000)]
1.0.42.18: let's take that again

 Previous commit was supposed to have this commit message:

 "OpenBSD build fix -- signal handlers need to lead FPU control word"

 * Patch by Josh Elsasser, lp#615492.

   In his words:

   OpenBSD/amd64 recently began running signal handlers with a clean
   FPU state, making it necessary to load the floating point control
   word. The attached patch does exactly this, and works equally well
   on OpenBSD systems from both before and after the signal handler
   change was made.

   This patch is necessary to build SBCL x86-64 on recent -current
   snapshots of OpenBSD, and for the upcoming 4.8 release.

 * Committing untested, as I don't have OpenBSD handy.

13 years ago1.0.42.17: better host lisp fasl-type logic
Nikodemus Siivola [Wed, 1 Sep 2010 16:05:17 +0000 (16:05 +0000)]
1.0.42.17: better host lisp fasl-type logic

 * Patch by Josh Elsasser, lp#615492.

   In his words:

   OpenBSD/amd64 recently began running signal handlers with a clean
   FPU state, making it necessary to load the floating point control
   word. The attached patch does exactly this, and works equally well
   on OpenBSD systems from both before and after the signal handler
   change was made.

   This patch is necessary to build SBCL x86-64 on recent -current
   snapshots of OpenBSD, and for the upcoming 4.8 release.

 * Committing untested, as I don't have OpenBSD handy.

13 years ago1.0.42.17: better host lisp fasl-type logic
Nikodemus Siivola [Wed, 1 Sep 2010 15:46:18 +0000 (15:46 +0000)]
1.0.42.17: better host lisp fasl-type logic

 * Patch by "nixeagle", lp#592903.

   Use COMPILE-FILE-PATHNAME to figure out the right pathname-type.

13 years ago1.0.42.16: better RANDOM type-error reporting
Nikodemus Siivola [Wed, 1 Sep 2010 15:27:07 +0000 (15:27 +0000)]
1.0.42.16: better RANDOM type-error reporting

 * Since RANDOM has an explicit check for the type, use the EXPLICIT-CHECK
   flag in the DEFKNOWN...

 * Patch by Stas Boukarev, lp#598986.