Christophe Rhodes [Tue, 15 Jul 2003 15:56:04 +0000 (15 15:56 +0000)]
0.8.0.78.vector-nil-string.15:
Since I previously made a note that the applicability of the
REPLACE transform was critical for the performance of
string-streams
... move types around sufficiently that the REPLACE transform
becomes applicable again in string-stream machinery.
(not that I observe the dramatic speedup I was hoping for)
Christophe Rhodes [Tue, 15 Jul 2003 09:36:15 +0000 (15 09:36 +0000)]
0.8.0.78.vector-nil-string.14:
Minor frobs, mostly to put behaviour back to as I found it in
unimportant bits. I think there's still a small performance
problem, which I'm investigating.
Christophe Rhodes [Fri, 27 Jun 2003 09:08:27 +0000 (27 09:08 +0000)]
0.8.0.78.vector-nil-string.13:
Update other architectures for (vector nil) as string
... just replace simple-string with simple-base-string as the
primitive type. Untested as yet; will be tested on sparc
post-commit.
Christophe Rhodes [Thu, 26 Jun 2003 09:07:11 +0000 (26 09:07 +0000)]
0.8.0.78.vector-nil-string.12:
Use *SAETP* to generate the data for internal error definition
(net win so far: 13)
Christophe Rhodes [Wed, 25 Jun 2003 16:59:35 +0000 (25 16:59 +0000)]
0.8.0.78.vector-nil-string.11:
Use *SAETP* to generate codes for type-vops
... (net win so far: 11)
Christophe Rhodes [Wed, 25 Jun 2003 14:23:54 +0000 (25 14:23 +0000)]
0.8.0.78.vector-nil-string.10:
Use *SAETP* in HAIRY-DATA-VECTOR-REF/HAIRY-DATA-VECTOR-SET
... new IMPORTANCE field in SAETPs, detailing how important we
should think arrays of that type are.
(net win so far: 7)
Christophe Rhodes [Wed, 25 Jun 2003 09:30:55 +0000 (25 09:30 +0000)]
0.8.0.78.vector-nil-string.9:
Indeed, with a little build rearrangement, we don't need a
temporary SB!XC:DEFTYPE FIXNUM, so let's do that instead.
... move some of src/code/type-init.lisp into
src/code/class-init.lisp
Christophe Rhodes [Wed, 25 Jun 2003 08:28:23 +0000 (25 08:28 +0000)]
0.8.0.78.vector-nil-string.8:
Some more OAOOification from *SAETP*
... add a COMPLEX-TYPECODE field to *SAETP* to allow us to carry
the information that SIMPLE-BIT-VECTOR and
COMPLEX-BIT-VECTOR are both bit vectors.
... use *SAETP* in %VECTOR-WIDETAG-AND-N-BITS,
ARRAY-ELEMENT-TYPE and SHRINK-VECTOR (net win so far: 6)
... we might need a FIXNUM type earlier than CLASS. I've got
one in, but then I found a refactor that might mean we
don't need it. The problem is in SPECIALIZE-ARRAY-TYPE,
where obviously we need to have complete knowledge about
all the possible upgraded-array-element-types so that
we can ask whether a given type is SUBTYPEP. FIXNUM
is defined as a type fairly late, but maybe defining it
before (simple-array (signed-byte 30) (*)) is enough,
when combined with...
Refactor PRIMITIVE-TYPEs
... we only ever use the specifier, not the ctype, of
PRIMITIVE-TYPE-TYPE, so...
... delete the TYPE field and add a SPECIFIER field.
... add AVERrance in SPECIALIZE-ARRAY-TYPE.
Christophe Rhodes [Tue, 24 Jun 2003 10:56:11 +0000 (24 10:56 +0000)]
0.8.0.78.vector-nil-string.7:
The beginnings of the payoff: being sufficiently irritated by
the baroque intertwinings of the different places where array
types have to be specified, here is a beginning of a
rationalization.
... make *SPECIALIZED-ARRAY-ELEMENT-TYPE-PROPERTIES* a master
value, and derive three other compiler-internal lists
from it. (net win so far: 3)
... but because it's made earlier so that we can use it as a
master value, SPECIFIER-TYPE gives unknown types;
a new file (and corresponding cold-init function)
fixes up unknown types (and for primitive-types too)
... there are still plenty of places left where array logic
isn't derived from *SAETP*; they will be worked on.
Christophe Rhodes [Mon, 23 Jun 2003 15:31:29 +0000 (23 15:31 +0000)]
0.8.0.78.vector-nil-string.6:
Cosmetic cleanups
... invert the test in %SXHASH-SIMPLE-SUBSTRING, since that
way it stands a chance of working even when putative
(VECTOR CHARACTER) != (VECTOR BASE-CHAR)
... some reasonable slight changes to RUN-PROGRAM / Unix
environment stuff.
The ALIEN/C-STRING issue looks like it's not a problem; all of the work
there is explicitly done in terms of BASE-STRINGs. I don't think anyone
is likely to complain at a type error should they attempt to pass an
object of (VECTOR NIL 0) to foreign lands as the null string, and even
if they do I feel unmotivated to care without sufficient inducement. :-)
Christophe Rhodes [Mon, 23 Jun 2003 14:05:26 +0000 (23 14:05 +0000)]
0.8.0.78.vector-nil-string.5:
Make MAKE-STRING work as expected
... respect ELEMENT-TYPE
... and while we're at it, make the transform not confuse the
compiler when the user's ELEMENT-TYPE isn't a subtype
of character
Also add some tests for some of the gotcha's we've found so
far.
Christophe Rhodes [Mon, 23 Jun 2003 12:32:52 +0000 (23 12:32 +0000)]
0.8.0.78.vector-nil-string.4:
Fix some brokennesses
... SXHASH now copes with (vector nil)s of non-zero length
... OUTPUT-SYMBOL can now output zero-length (vector nil)s
Christophe Rhodes [Mon, 23 Jun 2003 08:46:05 +0000 (23 08:46 +0000)]
0.8.0.78.vector-nil-string.3:
Fix most of the performance problem
... transforms for HAIRY-DATA-VECTOR-{REF,SET} on SIMPLE-STRING
Right. The all-important "compile sbcl" benchmark is now back to about
where it was (57 minutes on my laptop). There are still correctness
issues to deal with, not least
(sxhash (make-array 5 :element-type nil))
but this path isn't proving ridiculously expensive.
Christophe Rhodes [Wed, 18 Jun 2003 16:30:59 +0000 (18 16:30 +0000)]
0.8.0.78.vector-nil.2:
I can't see how to expose it, but fix the CLASS descriptions for
STRING and SIMPLE-STRING anyway (so that they have direct
superclasses, and their inherits look right).
Christophe Rhodes [Wed, 18 Jun 2003 15:16:05 +0000 (18 15:16 +0000)]
0.8.0.78.vector-nil-string.1:
As noted with horror between myself and pfdietz on #lisp,
vectors specialized on NIL are strings.
This patch implements (VECTOR NIL) as subtype of STRING with no
regressions in either our regression test suite or pfdietz' test suite.
However, this notwithstanding, there are a number of issues that need to
be resolved before this hits HEAD. (Why would it hit HEAD, you ask?
Well, it /is/ an ANSI issue, but in this case that would probably just
merit it an entry in BUGS, were it not for the fact that a Unicode
implementation is likely to have several string representations, so most
of the issues that we're addressing here will have to be dealt with in
any case; the use of (ARRAY NIL) as a "poison pill" to investigate
string routines and the like is probably a good thing. Note that this
is only a half-way house; while STRING is no longer the same type as
BASE-STRING, which is one portion of the Unicode battle, CHARACTER
remains equivalent to BASE-CHAR).
Brokennesses:
* STRING= and similar functions may work by accident for (VECTOR NIL 0),
but they're unlikely to be robustly working;
* FFI and ALIEN: we need at the very least (a) to ensure that C-STRINGs
get turned into a useful string type, not (VECTOR NIL) and (b) to
install a conversion routine for the other direction, so that the Lisp
string #.(make-array 0 :element-type nil) becomes the C string "";
* Filesystem access and SB-UNIX is completely unaudited. This may be
similar to the above issue;
* SXHASH-SIMPLE-STRING tries to access string elements, and promptly
errors on a (VECTOR NIL) with non-zero length. This also breaks
TYPE-OF;
* INTERN currently takes only a BASE-STRING;
* [ probably others. Should examine Brian Spilsbury's Unicode patch for
some more gotchas. ]
Suboptimalities:
* 10% slowdown in self-compilation, probably mostly caused by
CONCATENATE (not transformed away for general SIMPLE-STRINGs any more)
and HAIRY-DATA-VECTOR-{REF,SET} (type dispatch unavoidable for the
latter on STRING-typed objects). We can mitigate the latter issue by,
for STRINGlike types including (VECTOR NIL), having a vector nil type
test branching to an array-nil-accessed error clause if true, then
retrying the hairy-data-vector optimization;
* throughout the codebase, string and base-string have been
interchangeably used for a number of years; we need to look at them
all and fix them if necessary.
Nikodemus Siivola [Sun, 17 Feb 2008 13:26:15 +0000 (17 13:26 +0000)]
1.0.14.32: fix bug 407
* %SINGLE-FLOAT and %DOUBLE-FLOAT should not be flushable.
* BUGS entry remains: should (COERCE (EXPT 2 1024) 'SINGLE-FLOAT)
really signal a TYPE-ERROR?
Nikodemus Siivola [Sun, 17 Feb 2008 08:18:40 +0000 (17 08:18 +0000)]
1.0.14.31: better ANSI-STREAM-FILE-POSITION
* Instead of searching for the external-format object to obtain
the character-width function, store the function (or its result
for fixed-width external formats) directly into the FD-STREAM
object. Non-FD-STREAM ANSI-STREAMS use the old strategy.
Christophe Rhodes [Sat, 16 Feb 2008 10:34:45 +0000 (16 10:34 +0000)]
1.0.14.30: don't construct obsolete instances
The CTOR make-instance optimization machinery closes over the
class wrapper of the class in question; however, there are
code paths that cause wrappers to be invalidated without causing
all constructors to be recomputed: for instance, the
redefinition of a superclass, or calling
MAKE-INSTANCES-OBSOLETE. This would mean that the CTORs would
create obsolete instances, which would instantly trap, showing
up as slowness in CLOS-heavy code.
Problem and fix largely identified by Andy Hefner in
<http://paste.lisp.org/display/55689>.
Nikodemus Siivola [Fri, 15 Feb 2008 14:42:30 +0000 (15 14:42 +0000)]
1.0.14.29: update ASDF again
* ...to a version that has correct *asdf-revision*.
Nikodemus Siivola [Thu, 14 Feb 2008 16:43:08 +0000 (14 16:43 +0000)]
1.0.14.28: small FGEN improvements
* Use a DEFSTRUCT instead of a vector for clarity. Also eliminate the
unused mystery slot.
* Inline code of GET-NEW-FUN-GENERATOR-INTERNAL in
GET-NEW-FUN-GENERATOR.
* Store in a hash-table for O(1) goodness instead of a list.
* ENSURE-FGEN instead of MAKE-FGEN + STORE-FGEN.
* When lifting constants out of code in FGEN construction, leave
constant lists in place: several of the functions we generate FGENs
for have ETYPECASE forms, which will otherwise cause us to close
over the :EXPECTED-TYPE and :POSSIBILITIES arguments to ERROR for
no good reason.
Nikodemus Siivola [Thu, 14 Feb 2008 16:40:45 +0000 (14 16:40 +0000)]
1.0.14.27: rename MAKE-FIXNUM to POINTER-HASH
* Use VOP translation instead of %PRIMITIVE.
* On x86 and x86-64 improve the pointer-hash slightly: use the whole
address, but none of the tag bits in the hash.
* Fix type in INDEX-FOR-HASHING: the first argument is a HASH, not an
INDEX. Given the better quality of low bits on x86oids (and
hopefully soon on others as well), adjust the mixing a bit.
Nikodemus Siivola [Fri, 8 Feb 2008 14:16:11 +0000 (8 14:16 +0000)]
1.0.14.26: tweak COND slightly
* Don't expand into a final (COND), but directly to NIL (easier to
read macroexpansion.)
* Check for the common case of final T, so that the last clause can be
unconditional instead of generating redundant IF.
Nikodemus Siivola [Fri, 8 Feb 2008 12:55:54 +0000 (8 12:55 +0000)]
1.0.14.25: trivial WHEN & UNLESS change
* Implement directly on top of IF & PROGN instead of COND: clearer
macroexpansion, and slightly less work to compile to boot.
Nikodemus Siivola [Fri, 8 Feb 2008 12:49:02 +0000 (8 12:49 +0000)]
1.0.14.0.24: spell-check and proofread NEWS a bit
* ...and add the "reported by" left out from the last commit.
Nikodemus Siivola [Fri, 8 Feb 2008 12:38:15 +0000 (8 12:38 +0000)]
1.0.14.0.23: hash-table printing improvements
* Respect printer-control variables when printing readably.
* Print non-null weakness when printing unreadably.
Nikodemus Siivola [Wed, 6 Feb 2008 14:26:41 +0000 (6 14:26 +0000)]
1.0.14.22: more backtrace verbosity, for a change
* Revert part of the *SHOW-ENTRY-POINT-DETAILS* functionality: always
return the DEBUG-FUN-KIND from FRAME-CALL, so that instead of the
rather confusing
(FOO MY-ARGUMENT)
(FOO MY-ARGUMENT)
a slightly mysterious but hopefully less confusing
(FOO MY-ARGUMENT)
(FOO MY-ARGUMENT) [:EXTERNAL]
appears in backtraces where the XEP hasn't been tail-merged.
Nikodemus Siivola [Wed, 6 Feb 2008 11:46:07 +0000 (6 11:46 +0000)]
1.0.14.21: debugger refactoring: MAP-BACKTRACE and MAP-FRAME-ARGS
* Thanks to Attila Lendvai.
Nikodemus Siivola [Tue, 5 Feb 2008 04:09:23 +0000 (5 04:09 +0000)]
1.0.14.20: XSET used EQ instead of EQL for comparison
* Fix it, and add a test specifically for MEMBER using EQL.
Richard M Kreuter [Mon, 4 Feb 2008 22:55:21 +0000 (4 22:55 +0000)]
1.0.14.19: Fix SB-SHOW, broken for a while.
* Optimization in CONCATENATE broke SB-SHOW in the cross compiler.
Disable this optimization in SB-SHOW.
Nikodemus Siivola [Mon, 4 Feb 2008 22:14:08 +0000 (4 22:14 +0000)]
1.0.14.18: fix bogus STYLE-WARNING for MAKE-HASH-TABLE :SYNCHRONIZED
* Add :SYNCHRONIZED to thr DEFKNOWN.
* Also fix a bit of totally broken indentation in the
hash-table code.
* Cautionary comment about a potential type-error in parallel code.
* More threaded hash-table tests.
Nikodemus Siivola [Mon, 4 Feb 2008 20:49:27 +0000 (4 20:49 +0000)]
1.0.14.17: treat (NAMED-LAMBDA NIL ...) like (LAMBDA ...)
* Getting NIL as the source-name of a functional is pretty bogus, and
getting it as the debug-name messes with our careful debug-name
sanity checks. So don't do it then.
Nikodemus Siivola [Mon, 4 Feb 2008 15:40:32 +0000 (4 15:40 +0000)]
1.0.14.16: add explicit CHECK-CONSTANT-MODIFICATION policy
* Allows using SB-COVER with (RESTRICT-COMPILER-POLICY 'SAFETY 3).
Nikodemus Siivola [Mon, 4 Feb 2008 15:11:35 +0000 (4 15:11 +0000)]
1.0.14.15: fix typo in inline declaration for SOURCE-FORM-HAS-PATH-P
* Thanks to Peter Graves.
Nikodemus Siivola [Sun, 3 Feb 2008 20:05:54 +0000 (3 20:05 +0000)]
1.0.14.14 fix SB-POSIX:MK*TEMP() tests
* BSD may be happy with just three Xs in the template, but Linux at
least wants six.
Juho Snellman [Sun, 3 Feb 2008 18:36:18 +0000 (3 18:36 +0000)]
1.0.14.13: Rewrite non-standard LOOP syntax
* Using XCL as the host compiler did not work due to a FOR/WHILE/FOR
sequence (which is not defined in the spec, though supported by
most implementations). Reported by Peter Graves.
Nikodemus Siivola [Sun, 3 Feb 2008 01:20:43 +0000 (3 01:20 +0000)]
1.0.14.12: export SB-POSIX:MKSTEMP, add SB-POSIX:MKTEMP and SB-POSIX:MKDTEMP
* Remove the alien struct consing from the calls -- just use the SAP
directly.
* Automagic unsupportedness handling for platforms that miss any of
these.
* Rudimentary tests.
* #-win32 for now.
Nikodemus Siivola [Sun, 3 Feb 2008 00:52:00 +0000 (3 00:52 +0000)]
1.0.14.11: update ASDF to 1.114 from CCLAN
* On the ASDF side of the wall merge the empty SBCL_HOME handling to
upstream, and canonicalize the whitespace there.
Nikodemus Siivola [Fri, 1 Feb 2008 11:15:34 +0000 (1 11:15 +0000)]
1.0.14.10: friendly CHECK-TYPE error message for quoted type-specifiers
* (QUOTE ...) is never a valid type-specifier.
* When printing the macro-form responsible for an error, increase
*PRINT-LEVEL* from 1 to 3, for a slightly better compiler-log
reading experience.
Richard M Kreuter [Thu, 31 Jan 2008 19:29:24 +0000 (31 19:29 +0000)]
1.0.14.9: Fix regression in RUN-PROGRAM when :INPUT et al. are pathnames.
* GET-DESCRIPTOR-FOR is defined with &rest, &key, and
&allow-other-keys, and one pathway passes the &rest list to OPEN. A
recent addition of a keyword argument to GET-DESCRIPTOR-FOR that
OPEN didn't recognize created a problem.
* Add test for the correct behavior.
Nikodemus Siivola [Thu, 31 Jan 2008 13:04:30 +0000 (31 13:04 +0000)]
1.0.14.8: small TRACE and UNTRACE interface improvements
* (TRACE "FOO") now traces SETF-functions as well.
* (UNTRACE "FOO") is now supported.
Nikodemus Siivola [Thu, 31 Jan 2008 07:22:16 +0000 (31 07:22 +0000)]
1.0.14.7: quote non-keyword :default-initargs keys in SLOT-INIT-FORMS
* Reported and diagnosed by Matt Marjanovic.
Nikodemus Siivola [Tue, 29 Jan 2008 14:21:59 +0000 (29 14:21 +0000)]
1.0.14.6: SIMPLE-REFERENCE-ERROR, not SIMPLE-REFERENCE-CONDITION
* Bogus export, reported by Attila Lendvai.
* Fix the test-case to check that the condition type is sane, which
would have caught this in the first place.
Nikodemus Siivola [Tue, 29 Jan 2008 14:08:27 +0000 (29 14:08 +0000)]
1.0.14.5: fix threaded builds
* Broken by 1.0.14.1: LET*, not LET in MAKE-THREAD now.
Nikodemus Siivola [Tue, 29 Jan 2008 13:56:19 +0000 (29 13:56 +0000)]
1.0.14.4: increase MAX_INTERRUPTS to 1024
* ...hopefully fixing Stumpwm, and other signal-prone applications.
Nikodemus Siivola [Tue, 29 Jan 2008 13:20:19 +0000 (29 13:20 +0000)]
1.0.14.3: add html -> htm abbreviation to wxs.lisp
* Now that SB-COVER is working on Windows, this is required as the
build leaves html files in the test-output/ directory.
...of course we should probably clean up after the tests...
Reported by Charlie McMackin.
Nikodemus Siivola [Tue, 29 Jan 2008 12:51:26 +0000 (29 12:51 +0000)]
1.0.14.2: XREF needs to account for the last node of a block as well
* ...as it can be eg. a CSET node. Reported by "mogunus" on #lisp.
Lest readers of sbcl-commits start thinking that #lisp is the best
place to report bugs: it is not. This got immediate attention as I
was working in closely related areas anyways.
sbcl-devel and sbcl-help remain the correct place to report bugs.
Nikodemus Siivola [Mon, 28 Jan 2008 15:10:54 +0000 (28 15:10 +0000)]
1.0.14.1: lisp-side interrupt handling improvements
* Stack-top hint for interrupts: clears the uninteresting frames from
the top of a SIGINT backtrace.
* Revert to a defunless WITHOUT-INTERRUPTS &co: less useless
interrupt twiddling frames in backtraces -- now there should only
be occasional #:WITHOUT-INTERRUPTS-BODY frames, and those only when
there is at least something moderately interesting going on. There
is a balance to be struck here, though, and this may be too far in
the opposite direction...
* Interrupt safe SORT.
* ADJUST-ARRAY doesn't need to disable interrupts anymore.
* Handle internal errors using WITH-INTERRUPT-BINDINGS as well: with
sufficently bad luck one could eg. signal a continuable error (via
the internal error code-path) from eg . :KEY to SORT and then
corrupt the temporary vector in handler. It seems also possible to
construct a similar case that would cause bogus metacircles to be
detected -- this is easier to reason about.
William Harold Newman [Sun, 27 Jan 2008 22:33:07 +0000 (27 22:33 +0000)]
1.0.14: release, will be tagged as sbcl_1_0_14
Richard M Kreuter [Wed, 23 Jan 2008 14:42:36 +0000 (23 14:42 +0000)]
1.0.13.53: Minor changes to SB-COVER, SB-MD5 tests for Win32
* Have SB-COVER use md5sums of filenames for URLs.
* Have the test of SB-MD5:MD5SUM-FILE take the md5sum of a fresh empty
file, rather /dev/null or NUL, so that the test is independent of
any other limitations in CL:OPEN on Windows.
Richard M Kreuter [Wed, 23 Jan 2008 01:43:38 +0000 (23 01:43 +0000)]
1.0.13.52: Fix typo in bit-vector.impure-cload.lisp
* Test file didn't compile under #-gencgc builds.
Richard M Kreuter [Tue, 22 Jan 2008 17:14:31 +0000 (22 17:14 +0000)]
1.0.13.51: Fixups in mkstemp wrapper used in RUN-PROGRAM.
* Preclude a buffer overflow (though one that cannot occur at present,
given the single caller of this routine). Contributed by Alex
Plotnick.
Nikodemus Siivola [Mon, 21 Jan 2008 14:46:52 +0000 (21 14:46 +0000)]
1.0.13.50: rename JECXZ to JRCXZ in the x86-64 backend for clarity
* Thanks to Lutz Euler. (No 32 bit variant of the instruction in
64-bit mode.)
Nikodemus Siivola [Mon, 21 Jan 2008 14:44:45 +0000 (21 14:44 +0000)]
1.0.13.49: save source-locations for accessor methods defined via DEFCLASS
* Just pass source-location / definition-source along the necessary
code-paths -- all the required infra is already in place.
* Also get the source locations for PCL itself: it would be embarassing
not to have the source location for SB-PCL::DEFINITION-SOURCE. :)
Nikodemus Siivola [Mon, 21 Jan 2008 14:43:15 +0000 (21 14:43 +0000)]
1.0.13.48: SET-CLOSED-FLAME set ANSI-STREAM-IN twice (harmless but silly)
* Thanks to David Smith.
Nikodemus Siivola [Mon, 21 Jan 2008 14:41:57 +0000 (21 14:41 +0000)]
1.0.13.47: spurious INLINE declaration for (SETF FOO) from typed DEFSTRUCT
* Thanks to David Smith.
Nikodemus Siivola [Mon, 21 Jan 2008 14:40:54 +0000 (21 14:40 +0000)]
1.0.13.46: fixed bug #402
* Rewrite SPLIT-DECLARATIONS to use two (short) constant lists and
INFO instead of *VAR-DECLARATIONS-WITH|WITHOUT-ARG*.
* Test-case for #402.
* While at it, replace the *VAR-DECLARATIONS* from walker as well,
replacing it with WALKED-VAR-DECLARATION-P, and make VAR-DECLARATION
use a compiler-macro to check for bogus-declarations when possible.
(All our whopping 3 calls to it.)
* Bug #413 was fixed in 1.0.13, remove it from BUGS.
* Whitespace.
Nikodemus Siivola [Wed, 16 Jan 2008 15:46:22 +0000 (16 15:46 +0000)]
1.0.13.45: close the fd before deleting / moving files on CLOSE :ABORT T
* Windows is not happy about files with open handles dancing around.
This should one of the SB-COVER problems on Windows, and is
arguably better for posixoid platforms as well.
* SET-CLOSED-FLAME immediately after closing the fd, since that is in
a very real sense the boundary after which doing stream operations
is going to lose.
* Windows additions to .gitignore.
Nikodemus Siivola [Tue, 15 Jan 2008 23:55:51 +0000 (15 23:55 +0000)]
1.0.13.44: bug #414 has disappeared
* Most likely due to changes in debug instrumentation. :/
Add to regression suite, in case it comes back.
Nikodemus Siivola [Tue, 15 Jan 2008 23:24:04 +0000 (15 23:24 +0000)]
1.0.13.43: DIVIDE-BY-ZERO from BIGNUM-TRUNCATE
* Pre 1.0.6.19 version ended up calling %FLOOR, and all was well. Now
we need to check explicitly for zero. Reported by Michael Weber.
Nikodemus Siivola [Tue, 15 Jan 2008 22:13:21 +0000 (15 22:13 +0000)]
1.0.13.42: character untagging test from Lutz Euler
sbcl-devel 2007-05-01
Nikodemus Siivola [Tue, 15 Jan 2008 18:25:55 +0000 (15 18:25 +0000)]
1.0.13.41: SB-SPROF:REPORT when there are no samples
* Used to signal an error -- report lack of samples, and return NIL
instead. Reported by Andy Hefner on sbcl-devel 2008-01-06.
Nikodemus Siivola [Tue, 15 Jan 2008 18:10:45 +0000 (15 18:10 +0000)]
1.0.13.40: CLASS-SLOTS signals an error for unfinalized classes
* AMOP requirement, reported by Levente Meszaros on
sbcl-devel 2007-04-20.
* New condition class for convenience:
SB-INT:SIMPLE-REFERENCE-ERROR.
Nikodemus Siivola [Tue, 15 Jan 2008 15:26:08 +0000 (15 15:26 +0000)]
1.0.13.39: record bug #421
* Unchecked RETURN reported by Kevin Reid.
Nikodemus Siivola [Tue, 15 Jan 2008 14:50:27 +0000 (15 14:50 +0000)]
1.0.13.38: final part of the debug-name improvements
* Use NAME-LAMBDALIKE to construct the debug-name if :NAME is NIL.
* Also make sure the SOURCE-NAME is not NIL, but .ANONYMOUS. if none
is provided.
* Correct handling of &OPTIONAL-PROCESSOR debug-names: the debug-name
keyword is provided by the callers, so we cannot default it as part
of the keyword parsing (in case it is NIL), additionally, even if
we have a debug-name already, we still want to make up an
&OPTIONAL-PROCESSOR debug-name.
* Ensure (and strategically AVER) that we have a non-null debug-name
for things which are .ANONYMOUS. -- by making up one using
NAME-LAMBDALIKE if nothing else.
* AVER that the second argument of DEBUG-NAME is not NIL.
* Test that (COMPILE NIL '(LAMBDA ...)) doesn't make function which
backtrace as NIL anymore.
Nikodemus Siivola [Tue, 15 Jan 2008 13:28:46 +0000 (15 13:28 +0000)]
1.0.13.37: skip compilation of null and non-symbol toplevel atoms
* Not a performance consideration, but rather part of tidying up code
paths that lead DEBUG-NAME to be called with NIL as the second
argument (in IR1-TOPLEVEL the form becomes part of the
TOP-LEVEL-FORM debug-name.)
Nikodemus Siivola [Tue, 15 Jan 2008 12:25:54 +0000 (15 12:25 +0000)]
1.0.13.36: better HAIRY-FUNCTION-ENTRY debug-names
* Instead of LVAR-FUN-NAME, use new LVAR-FUN-DEBUG-NAME, which works
even for multiply-used lvars, by returning the list of names
instead of just NIL.
Nikodemus Siivola [Tue, 15 Jan 2008 11:59:30 +0000 (15 11:59 +0000)]
1.0.13.35: preserve source- and debug-name in IR1-OPTIMIZE-MV-CALL
* Copying them from the original leaf before converting the
replacement function.
Nikodemus Siivola [Tue, 15 Jan 2008 11:17:27 +0000 (15 11:17 +0000)]
1.0.3.34: better debug-name construction
* Make *DEBUG-NAME-LEVEL* behave more like *PRINT-LEVEL*, and add
*DEBUG-NAME-LENGTH*. Now, instead of the old
(VARARG-ENTRY (LAMBDA (&OPTIONAL ("#<...>" . "#<...>") . "<...>")))
we get
(VARARG-ENTRY (LAMBDA (&OPTIONAL (FOO *BAR*) (QUUX *ZOT*)))
which is a lot more useful.
* Use slightly magical debug name markers that print as # and ...
instead of strings when abbreviating names.
Nikodemus Siivola [Tue, 15 Jan 2008 02:45:15 +0000 (15 02:45 +0000)]
1.0.3.33: use NAMED-LAMBDA instead of LAMBDA for pretty-printer predicates
* AKA less mysterious (LAMBDA (OBJECT)) potential in statistical
profiling &co. (No, I haven't been overly troubled by such functions,
but since it is easy to give these ones names, we just as well may.)
Nikodemus Siivola [Tue, 15 Jan 2008 02:29:50 +0000 (15 02:29 +0000)]
1.0.13.32: fix run-sbcl.sh when sh != bash in disguise
...2008! Shell portability issues! AAARGH!
(Ok, slightly embarrassed as well.)
Nikodemus Siivola [Mon, 14 Jan 2008 12:41:43 +0000 (14 12:41 +0000)]
1.0.13.31: update bug #108 (ROOM issues)
* 1.0.3.21 took care of the (SAP= CURRENT END) aver failure, but
other issues remain.
Nikodemus Siivola [Mon, 14 Jan 2008 12:22:11 +0000 (14 12:22 +0000)]
1.0.13.30: more README touchups
* Texinfo, not DocBook since late 2004. :) We're fast on things
like this.
* HTML available for download, not part of the normal binary
distribution.
* Mention BUGS.
* PURIFY doesn't happen on x86 Darwins, and I've never had to touch
the limits on PPC either -- so delete that bit.
Nikodemus Siivola [Mon, 14 Jan 2008 12:05:32 +0000 (14 12:05 +0000)]
1.0.13.29: run-sbcl.sh script
* I'm tired of typing the mantra, and it's probably good to make
it easy for users too to run SBCL before installation.
* Add to binary tarball, and mention in INSTALL.
Alexey Dejneka [Sun, 13 Jan 2008 20:39:21 +0000 (13 20:39 +0000)]
1.0.13.28: Add OPTIMIZE documentation for SBCL-specific optimize qualities.
Nikodemus Siivola [Sun, 13 Jan 2008 18:08:01 +0000 (13 18:08 +0000)]
1.0.13.27: commentary on BUG #420
...adapted from sbcl-devel.
Kevin Rosenberg [Sun, 13 Jan 2008 03:59:54 +0000 (13 03:59 +0000)]
1.0.13.26:
* sb-aclrepl: Display single-floats in IEEE-756 format for 64-bit
platforms for consistency with 32-bit platforms.
Nikodemus Siivola [Sat, 12 Jan 2008 15:29:02 +0000 (12 15:29 +0000)]
1.0.13.25: reinstante *PERIODIC-POLLING-FUNCTION*
* Instead of *MAX-EVENT-(U)SEC* use *PERIODIC-POLLING-PERIOD*.
* After polling, if there is any more waiting left to do, call
SUB-SERVE-EVENT again. (The old implementation did not do this,
but this seems right to me.)
* Export the API, and mark as EXPERIMENTAL. Unadvertised in the docs
or NEWS for now -- but the docstrings should be clear enough.
Waiting for happiness report from CLG folks before publishing this.
Kevin Rosenberg [Fri, 11 Jan 2008 18:59:58 +0000 (11 18:59 +0000)]
1.0.13.24:
* sb-aclrepl: Fix inspection of single-floats on 64-bit platforms
which are now unboxed data.
Nikodemus Siivola [Fri, 11 Jan 2008 11:03:18 +0000 (11 11:03 +0000)]
1.0.13.23: record READ-CHAR-NO-HANG bug on Windows (#421)
* Reported by Elliot Slaughter.
William Harold Newman [Thu, 10 Jan 2008 15:54:04 +0000 (10 15:54 +0000)]
1.0.13.22: text tweaks
* logged a bug
* searched for sbcl-devel references and added notes about
the need to subscribe (since the mailman bounce message is
particularly unhelpful, and I periodically get mail from
frustrated would-be posters)
* fixed a few typoes
* revised a few passages, and completely gave up on trying to
summarize SBCL performance in a paragraph in the man page
Nikodemus Siivola [Thu, 10 Jan 2008 14:41:27 +0000 (10 14:41 +0000)]
1.0.13.21: MAP-ALLOCATED-OBJECTS robustification
* There are two cases where we used to fail our AVER (SAP= CURRENT
END) in MAP-ALLOCATED-OBJECTS:
-- If we had constructed an unlucky bogus object or few during our
heap traversal, we might be just sufficiently out of synch to
overstep it.
-- If we allocated new objects past the original END during heap
traversal and, and the mapped over them.
* Fix the last case always: before calling the provided function,
check that the object ends before END.
* Fix the second case for fastidious callers (and add an optional
argument so callers can inform us about their fastidiousness) by
using MAKE-LISP-OBJ instead of %MAKE-LISP-OBJ. ROOM still uses the
old version, since the careful approach is too slow, and even
the slow path uses %MAKE-LISP-OBJ in the less-error-prone cases.
...so not quite perfect yet.
Nikodemus Siivola [Thu, 10 Jan 2008 11:32:46 +0000 (10 11:32 +0000)]
1.0.13.20: added SB-EXT:*EXIT-HOOKS*
* Also document *INIT-HOOKS* and *SAVE-HOOKS*.
* Trailing whitespace cleanup in start-stop.texinfo.
Richard M Kreuter [Thu, 10 Jan 2008 01:48:12 +0000 (10 01:48 +0000)]
1.0.13.19: Odds and ends (OpenBSD NEWS, minor bug in PROBE-FILE, mkstemp())
* Add note about OpenBSD revival in NEWS
* PROBE-FILE, TRUENAME were returning an extra value from filename parsing
* Have our internal mkstemp() binding take a mode, and remove
unix-chmod from sb-unix. This slightly improves RUN-PROGRAM
security on Unix platforms where mkstemp() doesn't create a new file
with mode #o0600.
Richard M Kreuter [Wed, 9 Jan 2008 19:12:23 +0000 (9 19:12 +0000)]
1.0.13.18: Revived OpenBSD support, contributed by Josh Elsasser
Alexey Dejneka [Sun, 6 Jan 2008 06:17:26 +0000 (6 06:17 +0000)]
1.0.3.17: new bug in DX value-cells.
Richard M Kreuter [Sat, 5 Jan 2008 14:43:13 +0000 (5 14:43 +0000)]
1.0.13.16: Fix regression in FILE-AUTHOR.
* Typo. File author should return the author, not the file write-date.
Spotted by Damien Diederen. Add test for same.
Juho Snellman [Fri, 4 Jan 2008 01:52:28 +0000 (4 01:52 +0000)]
1.0.13.15: Fix some VECTOR-PUSH-EXTEND problems
* Ensure that the vector is always extended by at least one element
when full, even if MIN-EXTENSION is smaller than 1. (Prevents
array index overflows).
* Don't try to extend a vector beyond ARRAY-DIMENSION-LIMIT.
* Patch by Paul Khuong.
Juho Snellman [Fri, 4 Jan 2008 01:49:37 +0000 (4 01:49 +0000)]
1.0.13.14: Reduce character stream input consing
* Inline UNIX-READ into REFILL-INPUT-BUFFER to remove SAP boxing,
remove non-local exits over full call boundaries (patch by Paul
Khuong).
* Inline REFILL-BUFFER in READ-SEQUENCE and READ-LINE.
* D-X-allocate value cells in REFILL-INPUT-BUFFER.
Christophe Rhodes [Thu, 3 Jan 2008 14:50:47 +0000 (3 14:50 +0000)]
1.0.13.13: Actually export RESOLVE-CONFLICT et al from SB-EXT
... as documented, but not as actually done.
Reported by Maciej Katafiasz sbcl-devel 2008-01-13
Also slightly better documentation links for *posix-argv*.
Juho Snellman [Thu, 3 Jan 2008 03:54:05 +0000 (3 03:54 +0000)]
1.0.13.12: Make :SB-HASH-TABLE-DEBUG feature more useful
* Only signal errors for concurrent writer/writer or reader/writer
accesses, not reader/reader. (The latter is basically intended to
always be safe).
* Patch by Attila Lendvai
Juho Snellman [Wed, 2 Jan 2008 23:07:15 +0000 (2 23:07 +0000)]
1.0.13.11: ensure that sb-cover records don't clash with constants in user code
* If a code coverage instrumentation record is coalesced with another
constant in the same file, the "we know what we're doing" comment
in INSTRUMENT-COVERAGE about modifying constants no longer applies.
Changes to the record will be reflected in the other constant too,
which is probably not what the user expected.
* Ensure that coalescing cannot happen by using a symbol internal to
SB-C as the CDR of the record (instead of NIL).
* Reported separately by Christophe Rhodes and Rahul Jain.
Nikodemus Siivola [Wed, 2 Jan 2008 12:04:08 +0000 (2 12:04 +0000)]
1.0.13.10: x86 MOVE-FROM-SIGNED & MOVE-FROM-UNSIGNED hackery
* SIGNED: use IMUL and JNO to fixnumize / check for overflow: just
one branch, but same size as the old SHL 1 & JNO twice method --
faster on modern x86en.
* UNSIGNED: always do the LEA after TEST. If we need to allocate a
bignum the LEA should be noise -- just one jump needed this way.
* Move bignum allocation out-of-line in both -- shrinks the core a
bit, and with any luck may help with cache effects: specialize the
allocation routines for each GP register, and pass the argument and
result in the same register to minimize the code-size at
call-sites. Thanks to NJF for the nicer out-of-line version using
just the single register.
* Remove / clarify old comments, and get rid of the old commented out
versions.
Juho Snellman [Tue, 1 Jan 2008 18:16:29 +0000 (1 18:16 +0000)]
1.0.13.9: Fix another segfault from the new RESTART-FRAME instrumentation
* When a function was inlined, and a XEP created for it in the same
component, it was possible that a BIND-SENTINEL VOP would be emitted
without a closing UNBIND-SENTINEL.
* Fix this by never instrumenting inlined functions.
* Reported by James Knight.
Richard M Kreuter [Tue, 1 Jan 2008 15:07:53 +0000 (1 15:07 +0000)]
1.0.13.8: Fix bug in ENSURE-DIRECTORIES-EXIST
* ENSURE-DIRECTORIES-EXIST used NAMESTRING rather than
NATIVE-NAMESTRING to construct filenames, and so failed when the
pathname denoted a filename containing wildcard characters.
* Add tests for same.
Juho Snellman [Tue, 1 Jan 2008 14:49:49 +0000 (1 14:49 +0000)]
1.0.13.7: Fix off-by-one regression in STRING-LIST-TO-C-STRVEC
* "Since 1.0.12.21, the size variable already includes the null byte."
* Patch by David Lichteblau
Juho Snellman [Tue, 1 Jan 2008 14:45:33 +0000 (1 14:45 +0000)]
1.0.13.6: Add missing sb-xc-host definition for sign-extend
* Patch by David Lichteblau
Richard M Kreuter [Tue, 1 Jan 2008 01:01:01 +0000 (1 01:01 +0000)]
1.0.13.5: Fix bugs in USER-HOMEDIR-PATHNAME, SBCL-HOMEDIR-PATHNAME
* Both these functions parsed filenames returned by system calls
implicitly using to the syntax of *DEFAULT-PATHNAME-DEFAULTS*, and
so would lose when *D-P-D* was a logical pathname host. So have
them parse filenames using explicit physical pathname hosts.
* Tests for same.
Richard M Kreuter [Mon, 31 Dec 2007 18:39:23 +0000 (31 18:39 +0000)]
1.0.13.4: Removing UNIX-NAMESTRING, part 4
* PROBE-FILE, TRUENAME, FILE-WRITE-DATE, FILE-AUTHOR rewritten.
Truenames now 78% more truthful.
Richard M Kreuter [Sun, 30 Dec 2007 22:30:34 +0000 (30 22:30 +0000)]
1.0.13.3: Fix minor bug in INPUT-STREAM-P, OUTPUT-STREAM-P
* ANSI-STREAM-{INPUT,OUTPUT}-STREAM-P incorrectly assumed that a
synonym stream's destination stream was an ANSI-STREAM, and so
signaled errors when a synonym stream's target was a user-defined
stream. Reported by Jean-Philippe "Hexstream" Paradis in #lisp.
* Also add test for same.
Richard M Kreuter [Sun, 30 Dec 2007 05:32:29 +0000 (30 05:32 +0000)]
1.0.13.2: Removing UNIX-NAMESTRING, part 3 (sort of)
* Add condition classes to SB-POSIX that are subclasses of FILE-ERROR,
to give more precise information than vanilla FILE-ERRORs after
users load SB-POSIX.
* Add code to sb-grovel in support of same.