sbcl.git
16 years ago1.0.19.25: refactor global muffling slightly
Nikodemus Siivola [Tue, 5 Aug 2008 16:32:17 +0000 (16:32 +0000)]
1.0.19.25: refactor global muffling slightly

 * Move TYPEP *MUFFLED-WARNINGS* into a separate function for easier
   debugging. (Too hard to replace the inital handler cluster while
   running, whereas redefining MUFFLED-WARNING-P is easy.)

16 years ago1.0.19.24: incorrect function type canonicalization
Nikodemus Siivola [Tue, 5 Aug 2008 16:29:08 +0000 (16:29 +0000)]
1.0.19.24: incorrect function type canonicalization

 * If the signature has both &KEY and &OPTIONAL arguments, the
   canonicalization cannot merge &OPTIONAL into &REST. (Not that I am sure why
   we should be merging &OPTIONAL into &REST in *any* case, but this caused
   bogus warning.)

 * Add &KEY SILENT to PARSE-LAMBDA-LIST-LIKE-THING, which silences any
   style-warnings from it: we don't want SPECIFIER-TYPE to complain about the
   lambda-lists it parses.

16 years ago1.0.19.23: COMPILER-WARN accepts conditions
Nikodemus Siivola [Tue, 5 Aug 2008 12:58:09 +0000 (12:58 +0000)]
1.0.19.23: COMPILER-WARN accepts conditions

 * Accidentally left out from 1.0.19.12.

16 years ago1.0.19.22: fix bug #425
Nikodemus Siivola [Tue, 5 Aug 2008 10:38:36 +0000 (10:38 +0000)]
1.0.19.22: fix bug #425

 * Make CLOSE drop input buffers from ANSI-STREAMs. Reported by Damien
   Cassou on sbcl-devel.

 * Signal SB-INT:CLOSED-STREAM-ERROR instead of a SIMPLE-ERROR -- good
   for clarity, enables a proper test.

16 years ago1.0.19.21: delete stale symbol SB-DI:DO-BLOCKS
Nikodemus Siivola [Mon, 4 Aug 2008 16:34:40 +0000 (16:34 +0000)]
1.0.19.21: delete stale symbol SB-DI:DO-BLOCKS

 * Reported by Tobias C. Rittweiler.

16 years ago1.0.19.20: fast CLRHASH on empty hash-tables
Nikodemus Siivola [Mon, 4 Aug 2008 15:58:35 +0000 (15:58 +0000)]
1.0.19.20: fast CLRHASH on empty hash-tables

 * Patch by Alec Berryman.

16 years ago1.0.19.19: manual updates
Nikodemus Siivola [Mon, 4 Aug 2008 12:00:58 +0000 (12:00 +0000)]
1.0.19.19: manual updates

 * Four patches from Xan Lopez on sbcl-devel, one slightly adjusted.

 * Document slot access efficiency issues.

16 years ago1.0.19.18: transform ADJOIN, ASSOC, MEMBER, and RASSOC to -EQ versions more often
Nikodemus Siivola [Mon, 4 Aug 2008 10:33:54 +0000 (10:33 +0000)]
1.0.19.18: transform ADJOIN, ASSOC, MEMBER, and RASSOC to -EQ versions more often

 * Add transforms from %FOO and %FOO-KEY to %FOO-EQ and %FOO-KEY-EQ,
   so that propagated type information has a chance to work its magic.

16 years ago1.0.19.17: DOLIST variable type on constant lists
Nikodemus Siivola [Sun, 3 Aug 2008 21:39:09 +0000 (21:39 +0000)]
1.0.19.17: DOLIST variable type on constant lists

 * When DOLIST list is a (LIST ...) form where every argument is a
   constant, constant-fold it during macro-expansion. (User has no
   direct access to the list itself, so this is safe.)

 * When DOLIST list ia a constant, add an extra binding,
   and annotate its type as (MEMBER ...).

   This means that the compiler knows that in

    (dolist (x (list 1 2 3)) ...)

   X is (INTEGER 1 3).

 * Also add a STYLE-WARNING for constant dotted lists in DOLIST.

16 years ago1.0.19.16: derive the type of (AREF (THE STRING X) Y) as CHARACTER
Nikodemus Siivola [Sun, 3 Aug 2008 19:35:14 +0000 (19:35 +0000)]
1.0.19.16: derive the type of (AREF (THE STRING X) Y) as CHARACTER

 * Even though we don't know the exact upgraded array element type, we
   do know the result is a character.

 * Noticed while wondering why C-ESCAPE had a call to %MEMBER instead
   of %MEMBER-EQ.

16 years ago1.0.19.15: package name conflict patched from Michael Weber
Nikodemus Siivola [Sat, 2 Aug 2008 08:27:30 +0000 (08:27 +0000)]
1.0.19.15: package name conflict patched from Michael Weber

 * Tests for package system name conflict resolution.

 * Fixed EXPORT bug which left symbol unexported in conflict
   situations.

 * Unbreak RESOLVE-CONFLICT restart:
    ** USEing packages with conflicting symbols
    ** Correctly handle conflicts involving CL:NIL by passing (list
       symbol) to package frobbing functions which take a list
       designator.

 * Removed commented-out version of NAME-CONFLICT.

16 years ago1.0.19.14: Immediate SAP bug fix & grab bag of small changes
Paul Khuong [Fri, 1 Aug 2008 17:10:21 +0000 (17:10 +0000)]
1.0.19.14: Immediate SAP bug fix & grab bag of small changes

 * SAPs can't actually be emitted as immediates. Only a problem now that
   constants are treated more cleverly.

   Fixes the "#.(SB-SYS:INT-SAP #X00000000) fell through ETYPECASE expression"
   bug associated with CFFI's NULL-POINTER. Reported by Ingo Bormuth on
   sbcl-devel, and by several others on #lisp.

 * EAs can still only fit 32 bit displacements on x86-64.

 * Make SAP-INT foldable, thus improving code generation for expressions
   like (sap= +null-pointer+ sap).

16 years ago1.0.19.13: Fix WITH-ALIEN for non-x86oids.
Richard M Kreuter [Fri, 1 Aug 2008 13:16:11 +0000 (13:16 +0000)]
1.0.19.13: Fix WITH-ALIEN for non-x86oids.

16 years ago1.0.19.12: give a warning for newly deprecated stack-allcation optimization policies
Nikodemus Siivola [Fri, 1 Aug 2008 11:19:03 +0000 (11:19 +0000)]
1.0.19.12: give a warning for newly deprecated stack-allcation optimization policies

 * Most importantly, keep the symbols around for a while, since otherwise reading
   code that tries to twiddle them causes a package-lock violation.

 * Make it a refence condition for good measure.

 * Prettify the output in from other policy-related warnings while at it.

16 years ago1.0.19.11: SB-SYS spring cleaning
Nikodemus Siivola [Fri, 1 Aug 2008 07:57:51 +0000 (07:57 +0000)]
1.0.19.11: SB-SYS spring cleaning

 * Delete a bunch of unused symbols (and one from SB-KERNEL too.)

 * Fix typo: SYSTEM-CONDITION-ADDRESS, not SYSTEM-CONDIION-ADDRESS.

16 years agoadditional list seeking transformations
Nikodemus Siivola [Thu, 31 Jul 2008 13:32:10 +0000 (13:32 +0000)]
additional list seeking transformations

 * Implement TRANSFORM-LIST-PRED-SEEK, very much akin to
   TRANSFORM-LIST-ITEM-SEEK, and use it to optimize MEMBER-IF[-NOT],
   ASSOC-IF[-NOT], and RASSOC-IF[-NOT].

 * Implement full versions of list seeking functions in terms of the
   specialized versions: in some cases this is a win, in some cases a
   loss -- but the number of places where functionality is duplicated
   is reduced, which should be easier on the maintenance and less
   bug-prone.

 * Add a TRANSFORM-LIST-ITEM-SEEK transform for RASSOC.

 * LVAR-FOR-NAMED-FUNCTION was a restricted form of LVAR-FUN-IS.  Do
   away with the former, and move the latter to ir1util.lisp.

16 years ago1.0.19.9: elide runtime calls to %COERCE-CALLABLE-TO-FUN in more cases
Nikodemus Siivola [Thu, 31 Jul 2008 12:52:37 +0000 (12:52 +0000)]
1.0.19.9: elide runtime calls to %COERCE-CALLABLE-TO-FUN in more cases

 * Core change: %COERCE-CALLABLE-TO-FUN can now convert to
   GLOBAL-FUNCTION.

 * While at it, refactor the whole "make up a form that returns a
   function to use instead of this lvar or source form" thing for
   clarity.

 * Record slightly crazy OPTIMIZATION possibility.

16 years ago1.0.19.8: SB-COVER:REPORT signals an error for non-directory pathnames
Nikodemus Siivola [Thu, 31 Jul 2008 06:50:54 +0000 (06:50 +0000)]
1.0.19.8: SB-COVER:REPORT signals an error for non-directory pathnames

 * Based on patch by Pierre Mai.

16 years ago1.0.19.7: refactor stack allocation decisions
Nikodemus Siivola [Wed, 30 Jul 2008 17:58:39 +0000 (17:58 +0000)]
1.0.19.7: refactor stack allocation decisions

 * Remove SB-C::STACK-ALLOCATE-* policies.

 * Obey DYNAMIC-EXTENT declarations if SB-EXT:*STACK-ALLOCATE-DYNAMIC-EXTENT*
   is true (the default), with the following exceptions:

    ** Value cells are not stack allocated.

    ** Vectors that may be longer then a single page are stack
       allocated only in SAFETY 0 policies.

 * New declaration: SB-INT:TRULY-DYNAMIC-EXTENT. Always stack-allocates,
   regardless of SB-EXT:*STACK-ALLOCATE-DYNAMIC-EXTENT*. Also causes stack
   allocation of value cells and potentially large vectors.

   Used exclusively inside SBCL.

 * Move STACK-ALLOCATE-RESULT optimizers from backends to
   src/compiler/generic/vm-ir2tran.lisp.

 * Documentation.

16 years ago1.0.19.6: fix SB-SHOW build
Nikodemus Siivola [Wed, 30 Jul 2008 16:35:25 +0000 (16:35 +0000)]
1.0.19.6: fix SB-SHOW build

 * Patch by Josh Elsasser for STYLE-WARN.

 * Make COLD-PRINT able to print improper lists -- early source
   locations are conses with the TLF number in the CDR.

16 years ago1.0.19.5: minor wording fix
Nikodemus Siivola [Wed, 30 Jul 2008 14:39:40 +0000 (14:39 +0000)]
1.0.19.5: minor wording fix

 * Patch by Zach Beane.

16 years ago1.0.19.4: recursive restart computation
Nikodemus Siivola [Wed, 30 Jul 2008 13:53:11 +0000 (13:53 +0000)]
1.0.19.4: recursive restart computation

 * A call to COMPUTE-RESTARTS from restart test function caused
   infinite recursion. Fix with a stack.

 * Test-case.

16 years ago1.0.19.3: more careful PROGV and SET
Nikodemus Siivola [Wed, 30 Jul 2008 13:51:55 +0000 (13:51 +0000)]
1.0.19.3: more careful PROGV and SET

 * Don't bind constants in PROGV.

 * Check variable types before binding / assignment.

 * When un-binding, PROGV doesn't temporarily bind a variable to NIL
   anymore, but directly to the unbound marker, so that an interrupt
   handler cannot see a bogus value.

 * Based on patch by Richard Kreuter.

16 years ago1.0.19.2: fix alien stack leak
Nikodemus Siivola [Wed, 30 Jul 2008 13:49:08 +0000 (13:49 +0000)]
1.0.19.2: fix alien stack leak

 * On x86oids bind *ALIEN-STACK* once for the entire WITH-ALIEN, obviating the need
   to release local aliens one-by-one.

 * On other platforms protect the cleanup with UWP.

 * :STATIC option has been disabled in WITH-ALIEN for a while now --
   not sure why, but remove the corresponding bit from docstring as
   well.

 * Test-case by Andy Hefner.

16 years ago1.0.19.1: DERIVE-TYPE optimizer for %%PRIMITIVE
Nikodemus Siivola [Wed, 30 Jul 2008 13:44:55 +0000 (13:44 +0000)]
1.0.19.1: DERIVE-TYPE optimizer for %%PRIMITIVE

 * Fixes #427: vintage TRULY-THE annotated the CALL early enough that
   the IR2 conversion of the %PRIMITIVE got the right primitive types.
   Now that TRULY-THE is a regular cast, an optimizer is needed to
   annotate the call.

 * Refactor FIND-TEMPLATE-RESULTS a bit.

 * Get rid of now-pointless TRULY-THE wrappers around several
   %PRIMITIVE calls.

 * Test-case.

16 years ago1.0.19: release, will be tagged as sbcl_1_0_19
Nikodemus Siivola [Wed, 30 Jul 2008 12:06:38 +0000 (12:06 +0000)]
1.0.19: release, will be tagged as sbcl_1_0_19

16 years ago1.0.18.30: disable failing test in timer.impure.lisp
Nikodemus Siivola [Wed, 30 Jul 2008 11:38:51 +0000 (11:38 +0000)]
1.0.18.30: disable failing test in timer.impure.lisp

 * Has been failing intermittently on various platforms, apparently as
   long as it has been there. Log as bug #428.

16 years ago1.0.18.29: documentation tweaks
Nikodemus Siivola [Wed, 30 Jul 2008 08:38:16 +0000 (08:38 +0000)]
1.0.18.29: documentation tweaks

 * Mention putative buildability on Win64 in NEWS.

 * Weak hash tables are supposed to work, don't say otherwise on the
   man-page.

 * Tweak README: mention INSTALL first. Manual lives in doc/manual
   nowadays, INSTALL tells how to build it.

16 years ago1.0.18.28: Add NEWS entry and manual entry for SB-EXT:*MUFFLED-WARNINGS*.
Richard M Kreuter [Sun, 27 Jul 2008 14:44:32 +0000 (14:44 +0000)]
1.0.18.28: Add NEWS entry and manual entry for SB-EXT:*MUFFLED-WARNINGS*.

16 years ago1.0.18.27: fix DEFSTRUCT compilation when init-form type is vague
Nikodemus Siivola [Tue, 22 Jul 2008 17:17:15 +0000 (17:17 +0000)]
1.0.18.27: fix DEFSTRUCT compilation when init-form type is vague

 * Reported by Josh Morrison. Regression from the recent DEFSTRUCT
   constructor hacking.

   Slots initialized by constructor lambda-list arguments have their
   types checked, but those slots always initialized directly by the
   initform values did not -- wrap the DSD-DEFAULT in a THE.

16 years ago1.0.18.26: explain why DX value generators must end their blocks
Nikodemus Siivola [Sun, 20 Jul 2008 07:52:07 +0000 (07:52 +0000)]
1.0.18.26: explain why DX value generators must end their blocks

 * Explanation and test-case from Alexey Dejneka -- mistakes are mine in the
   transcription.

 * Note about REFs to DX closures violating the rule -- which is why we cannot
   assert it right now.

 * Use DO-USES instead of DOLIST in UPDATE-UVL-LIVE-SETS.

 * Fix a stray typo in comment in USE-GOOD-FOR-DX-P.

16 years ago1.0.18.25: tweak stack allocation on x86 and x86-64
Nikodemus Siivola [Sat, 19 Jul 2008 16:07:52 +0000 (16:07 +0000)]
1.0.18.25: tweak stack allocation on x86 and x86-64

 * Use MAYBE-PSEUDO-ATOMIC in the LIST-OR-LIST* VOP: stack allocation
   doesn't need PA.

 * When using STACK-ALLOCATE-P parameter with ALLOCATION, also pass in
   the lowtag. This allows us to generate

     LEA REG [STACK_REG+LOWTAG]

   instead of

     MOV REG STACK_REG
     LEA REG [REG+LOWTAG]

   for stack allocation & tagging.

   On x86-64 can use the same trick in the inline path for heap
   allocation as well.

16 years ago1.0.18.24: lift node-insertion logic from RECOGNIZE-DYNAMIC-EXTENT-LVARS
Nikodemus Siivola [Sat, 19 Jul 2008 11:32:53 +0000 (11:32 +0000)]
1.0.18.24: lift node-insertion logic from RECOGNIZE-DYNAMIC-EXTENT-LVARS

 * New function INSERT-NODE-BEFORE, makes the action easier to
   understand by separating out the entry/cleanup creation from the
   flow-graph hacking.

16 years ago1.0.18.23: ALL calls with DX arguments should end their blocks
Nikodemus Siivola [Sat, 19 Jul 2008 09:48:14 +0000 (09:48 +0000)]
1.0.18.23: ALL calls with DX arguments should end their blocks

 * Consider this a clarification of 1.0.18.22: MAP-BLOCK-NLXES will
   miss calls that don't end their blocks.

   If let-conversion happens, as is the case most of the time, this is
   not an issue, since the LAMBDA-CALL-LEXENV will hold the lexenv
   with the cleanup.

   A :LET functional, however, should never appear in
   RECOGNIZE-DYNAMIC-EXTENT-LVARS, since let-conversion doesn't happen
   until later -- so the conditional was bogus.

   So: delete the conditional, and write a comment that points in
   the place where we depend on the block-endingness.

 * Add a FIXME note to another DX related place where we make nodes
   end their blocks, which I don't quite understand.

16 years ago1.0.18.22: DX arguments in non-let-converted local calls
Nikodemus Siivola [Fri, 18 Jul 2008 20:07:58 +0000 (20:07 +0000)]
1.0.18.22: DX arguments in non-let-converted local calls

 * When a non-let function has dynamic extent arguments, the
   combination must end its block, or stack analysis will miss the
   cleanup, and stack will be popped too soon.

16 years ago1.0.18.21: More STYLE-WARNINGs
Richard M Kreuter [Wed, 16 Jul 2008 20:51:14 +0000 (20:51 +0000)]
1.0.18.21: More STYLE-WARNINGs

* STYLE-WARN for argument list mismatches for all already-defined
  functions.

16 years ago1.0.18.20: Fewer STYLE-WARNINGs.
Richard M Kreuter [Wed, 16 Jul 2008 19:21:03 +0000 (19:21 +0000)]
1.0.18.20: Fewer STYLE-WARNINGs.

* Change definition of UNINTERESTING-ORDINARY-FUNCTION-REDEFINITION-P
  so that replacing an interpreted function is always uninteresting
  when the new definition comes from the same file.

* Monkey with source-locations so that they get created during LOAD of
  a source file when *EVALUATOR-MODE* is :INTERPRET.

16 years ago1.0.18.19: Fix FUNCTION-KEYWORDS, re-add FUNCTION-KEYWORD-PARAMETERS.
Richard M Kreuter [Wed, 16 Jul 2008 17:30:01 +0000 (17:30 +0000)]
1.0.18.19: Fix FUNCTION-KEYWORDS, re-add FUNCTION-KEYWORD-PARAMETERS.

* Recently-renamed FUNCTION-KEYWORD-PARAMETERS did something different
  than what FUNCTION-KEYWORDS is supposed to do.  Fix
  FUNCTION-KEYWORDS, and re-add a distinct FUNCTION-KEYWORD-PARAMETERS
  (used indirectly by DESCRIBE, something in sb-introspect, maybe
  elsewhere).

16 years ago1.0.18.18: Add support for abstract namespace addresses for AF_LOCAL sockets.
Richard M Kreuter [Wed, 16 Jul 2008 11:48:55 +0000 (11:48 +0000)]
1.0.18.18: Add support for abstract namespace addresses for AF_LOCAL sockets.

* Contributed by Matthew D. Swank

16 years ago1.0.18.17: Alter some STYLE-WARNING names introduced in 1.0.18.16.
Richard M Kreuter [Fri, 11 Jul 2008 18:55:07 +0000 (18:55 +0000)]
1.0.18.17: Alter some STYLE-WARNING names introduced in 1.0.18.16.

16 years ago1.0.18.16: many STYLE-WARNING changes.
Richard M Kreuter [Tue, 8 Jul 2008 21:31:50 +0000 (21:31 +0000)]
1.0.18.16: many STYLE-WARNING changes.

* Add various subclasses of STYLE-WARNING in src/code/condition.lisp
  for most of the cases signaled around the system.  (A few style
  warnings remain SIMPLE-STYLE-WARNINGS for now.)

* Make STYLE-WARN be like WARN (take a condition class name and
  arguments).

* Change over many callers of STYLE-WARN to supply names of new
  STYLE-WARNING classes and initargs for those conditions.

* Set the default value of SB-EXT:*MUFFLED-WARNINGS* to a type that
  includes uninteresting redefinitions of functions and methods.

16 years ago1.0.18.15: Tweak external-format tests for .gitignore, clean.sh.
Richard M Kreuter [Tue, 8 Jul 2008 14:24:53 +0000 (14:24 +0000)]
1.0.18.15: Tweak external-format tests for .gitignore, clean.sh.

16 years ago1.0.18.14: Tweak .gitignore for 2 Linux/PPC files.
Richard M Kreuter [Mon, 7 Jul 2008 15:08:07 +0000 (15:08 +0000)]
1.0.18.14: Tweak .gitignore for 2 Linux/PPC files.

16 years ago1.0.18.13: adjust address-spaces for Windows 32
Nikodemus Siivola [Mon, 7 Jul 2008 07:57:18 +0000 (07:57 +0000)]
1.0.18.13: adjust address-spaces for Windows 32

 * Dynamic-space was too large after the last adjustment.

16 years ago1.0.18.12: adjust address-spaces for Windows 64
Nikodemus Siivola [Fri, 4 Jul 2008 16:10:05 +0000 (16:10 +0000)]
1.0.18.12: adjust address-spaces for Windows 64

 * Thanks to John Connors if this works, blame me if it doesn't
   (untested, as I don't have a Windows box available, but reputedly
   this should be good for both Win32 and Win64.)

   Source: http://article.gmane.org/gmane.lisp.steel-bank.devel/10686

16 years ago1.0.18.11: Add SB-EXT:*MUFFLED-WARNINGS*, to muffle warnings at runtime.
Richard M Kreuter [Thu, 3 Jul 2008 21:31:57 +0000 (21:31 +0000)]
1.0.18.11: Add SB-EXT:*MUFFLED-WARNINGS*, to muffle warnings at runtime.

16 years ago1.0.18.10: Record filenames in DEBUG-SOURCEs during EVAL-WHEN, LOAD.
Richard M Kreuter [Thu, 3 Jul 2008 19:24:49 +0000 (19:24 +0000)]
1.0.18.10: Record filenames in DEBUG-SOURCEs during EVAL-WHEN, LOAD.

* During EVAL-WHEN (:COMPILE-TOPLEVEL) and LOAD, record both the
  filename and the S-expression in the DEBUG-SOURCE.

* Change clients of the DEBUG-SOURCE structure to use the new slots.
  (This also affects SLIME.)

16 years ago1.0.18.9: Fix fpu_save, fpu_restore on x86-64.
Richard M Kreuter [Mon, 30 Jun 2008 19:37:01 +0000 (19:37 +0000)]
1.0.18.9: Fix fpu_save, fpu_restore on x86-64.

* Incorrect definition lead to segfault during gencgc when gencgc_verbose>1.

16 years ago1.0.18.8: Sort results of APROPOS-LIST and APROPOS.
Richard M Kreuter [Mon, 30 Jun 2008 18:49:41 +0000 (18:49 +0000)]
1.0.18.8: Sort results of APROPOS-LIST and APROPOS.

16 years ago1.0.18.7: just one POWER-OF-TWO-CEILING, thank you
Nikodemus Siivola [Mon, 30 Jun 2008 10:33:57 +0000 (10:33 +0000)]
1.0.18.7: just one POWER-OF-TWO-CEILING, thank you

 * We had two, of which CEIL-POWER-OF-TWO with arguments that already
   were powers of two returned the *next* power of two, and not the
   argument, whereas POWER-OF-TWO-CEILING returned the argument if
   it already was a power of two.

   As far as I can tell returning the argument is fine in those case
   in places where CEIL-POWER-OF-TWO was used, so replace it with
   POWER-OF-TWO-CEILING -- which really doesn't have to be inline.

16 years ago1.0.18.6: rename SB-PCL::FUNCTION-KEYWORD-PARAMETERS to CL:FUNCTION-KEYWORDS
Nikodemus Siivola [Mon, 30 Jun 2008 10:04:48 +0000 (10:04 +0000)]
1.0.18.6: rename SB-PCL::FUNCTION-KEYWORD-PARAMETERS to CL:FUNCTION-KEYWORDS

 * Not that anyone seems to have missed it yet...

16 years ago1.0.18.5: ADJOIN with constant NIL as second argument
Nikodemus Siivola [Mon, 30 Jun 2008 09:48:27 +0000 (09:48 +0000)]
1.0.18.5: ADJOIN with constant NIL as second argument

 * One more bug in TRANSFORM-LIST-ITEM-SEEK.

16 years ago1.0.18.4: use CAREFUL-SPECIFIER-TYPE when deriving the type COERCE
Nikodemus Siivola [Mon, 30 Jun 2008 09:44:42 +0000 (09:44 +0000)]
1.0.18.4: use CAREFUL-SPECIFIER-TYPE when deriving the type COERCE

 * Derived type of the second argument can eg. be a MEMBER type with
   where all members are not valid type specifiers: this is a runtime
   error, not a compile-time one.

16 years ago1.0.18.3: more conservative arithmetic optimizations
Nikodemus Siivola [Mon, 30 Jun 2008 09:18:32 +0000 (09:18 +0000)]
1.0.18.3: more conservative arithmetic optimizations

 * Don't convert (op <int> <single>) to (op (float <int> <single>)
   <single) if the integer may be too large for accurate conversion.

16 years ago1.0.18.2: more conservative interval artihmetic
Nikodemus Siivola [Mon, 30 Jun 2008 09:00:37 +0000 (09:00 +0000)]
1.0.18.2: more conservative interval artihmetic

 * In SAFELY-BINOP, when the other argument must be coerced to single
   float, punt if it is an integer that cannot be exactly represented
   as a single float.

 * Fixes bug 420, and a whole slew of MISC failures in ansi-tests --
   including the ones that used to cause a hard crash or a hang: cvs
   up -dPC your ansi-test trees, and should huzzah!

16 years ago1.0.18.1: correct handling of SATISFIES types in the compiler
Nikodemus Siivola [Mon, 30 Jun 2008 08:35:58 +0000 (08:35 +0000)]
1.0.18.1: correct handling of SATISFIES types in the compiler

 * CTYPEP used to retur a secondary value of true in cases where the
   function in question was not foldable.

 * Slightly sleazily extent SB-C::CONSTANT-FUNCTION-CALL-P (part of
   CONSTANTP) to return the primary result of the call as the
   secondary value, so CTYPEP can use it.

 * Test-case.

16 years ago1.0.18: release, will be tagged as sbcl_1_0_18
Juho Snellman [Sun, 29 Jun 2008 20:11:25 +0000 (20:11 +0000)]
1.0.18: release, will be tagged as sbcl_1_0_18

16 years ago1.0.17.42: more string trimming fixes
Nikodemus Siivola [Tue, 24 Jun 2008 17:12:57 +0000 (17:12 +0000)]
1.0.17.42: more string trimming fixes

 * Return value in the no-op case for non-simple-strings must not be
   the underlying simple string object.

 * Correct return type (per spec) for STRING-TRIM &co is
   STRING-DESIGNATOR, but as long as we take care, we can make it
   STRING -- but the old SIMPLE-STRING is still wrong.

 * Instead of making WITH-STRING a full-blown Evil Macro, just use
   WITH-ARRAY-DATA at the call site.

 * Two more test-cases.

   patch by James Knight.

16 years ago1.0.17.41: Implement setsid, mlockall and mlockall in sb-posix
Juho Snellman [Mon, 23 Jun 2008 01:01:38 +0000 (01:01 +0000)]
1.0.17.41: Implement setsid, mlockall and mlockall in sb-posix

        * Also refactor some code
        * Patch by Travis Cross

16 years ago1.0.17.40: Fix build on -raw-instance-init-vops platforms (probably)
Juho Snellman [Mon, 23 Jun 2008 00:55:47 +0000 (00:55 +0000)]
1.0.17.40: Fix build on -raw-instance-init-vops platforms (probably)

        * Reported by Xach

16 years ago1.0.17.39: fix build on SIG_INTERRUPT_THREAD-less platforms
Nikodemus Siivola [Tue, 17 Jun 2008 08:08:16 +0000 (08:08 +0000)]
1.0.17.39: fix build on SIG_INTERRUPT_THREAD-less platforms

 * Patch by Josh Elsasser.

16 years ago1.0.17.38: fix linkage-table address->symbol lookup
Christophe Rhodes [Tue, 17 Jun 2008 00:04:17 +0000 (00:04 +0000)]
1.0.17.38: fix linkage-table address->symbol lookup
(from Andy Hefner sbcl-devel 2008-06-11)

16 years ago1.0.17.37: better indenting of compiler diagnostic messages.
Christophe Rhodes [Mon, 16 Jun 2008 23:10:06 +0000 (23:10 +0000)]
1.0.17.37: better indenting of compiler diagnostic messages.
(from Michael Weber sbcl-devel 2008-06-12)

16 years ago1.0.17.36: better pprinting of DEFPACKAGE forms.
Christophe Rhodes [Mon, 16 Jun 2008 22:56:12 +0000 (22:56 +0000)]
1.0.17.36: better pprinting of DEFPACKAGE forms.
From Michael Weber (sbcl-devel 2008-06-12)

16 years ago1.0.17.35: Bug fixes: cross-compiler's lookup of constants, recursive escaping
pkhuong [Sun, 15 Jun 2008 11:13:41 +0000 (11:13 +0000)]
1.0.17.35: Bug fixes: cross-compiler's lookup of constants, recursive escaping

 * Reinstate :CONSTANT-VALUE in the infodb as :XC-CONSTANT-VALUE
   during cross-compilation, since we can't override our host's
   standard constants.

 * Avoid recursive escaping in BLOCK-GENSYM.

16 years ago1.0.17.34: Fix bug: READ-LINE did not return T for the last line of ANSI-STREAM.
Alexey Dejneka [Sun, 15 Jun 2008 05:28:24 +0000 (05:28 +0000)]
1.0.17.34: Fix bug: READ-LINE did not return T for the last line of ANSI-STREAM.
           Reported by Yoshinori Tahara.

16 years ago1.0.17.33: fix PRINT-OBJECT cache
Christophe Rhodes [Wed, 11 Jun 2008 20:04:23 +0000 (20:04 +0000)]
1.0.17.33: fix PRINT-OBJECT cache
We mustn't compute the cached cache too early, otherwise we'll
cache effective methods before the actual methods (on RESTART
and the two storage-condition classes) are defined.

16 years ago1.0.17.32: faster ADD-METHOD to PRINT-OBJECT
Christophe Rhodes [Mon, 9 Jun 2008 21:49:15 +0000 (21:49 +0000)]
1.0.17.32: faster ADD-METHOD to PRINT-OBJECT
The basic idea here is reducing the number of functions whose
discriminating function and effective method cache are
precomputed; in particular, to reduce the number where users can
both legitimately define their own methods, and where a large
number of methods will be applicable to different classes.

The biggest culprit in both of those categories is the
PRINT-OBJECT generic function, which would recompute its entire
dispatch structure every time any method was added or removed.
So, turn off precomputation for names in the CL package; deal
with the bootstrap metacircles that that provokes; special-case
PRINT-OBJECT in COMPUTE-DISCRIMINATING-FUNCTION so that we can
always print certain critical pieces of infrastructure;
also, warn the user if they break our assumptions in
PRINT-OBJECT's specialization.

Fix one broken "how did it ever work" test.

16 years ago1.0.17.31: more constant cleverness
Nikodemus Siivola [Fri, 6 Jun 2008 12:00:23 +0000 (12:00 +0000)]
1.0.17.31: more constant cleverness

 * Make MAYBE-EMIT-MAKE-LOAD-FORM can dump _all_ references to
   non-trivial named constants using the name (well, not FP constants
   for SBCL itself.)

   This means that after (DEFCONSTANT +FOO+ "FOO") all references to
   +FOO+ are EQ, even in different files.

   ...some people are going to use this as an unportable performance
   hack, and their code will break horribly sooner or later, but more
   importantly we need to grovel less things, and more sharing means
   less memory use and better cache behaviour.

 * Tests.

16 years ago1.0.17.30: STREAM-FILE-POSITION works on ANSI-STREAMs
Nikodemus Siivola [Fri, 6 Jun 2008 11:13:41 +0000 (11:13 +0000)]
1.0.17.30: STREAM-FILE-POSITION works on ANSI-STREAMs

 * Package mismatch: ANSI-STREAM-FILE-POSITION was not exported from
   SB-KERNEL.

16 years ago1.0.17.29: fix build
Nikodemus Siivola [Thu, 5 Jun 2008 16:55:09 +0000 (16:55 +0000)]
1.0.17.29: fix build

 * I'll adviced last minute deletion of LIST-TO-HASH-TABLE-THRESHOLD:
   it was also used by the fopcompiler: use XSET there as well,
   and bump up the corresponding threshold in XSET a bit.

16 years ago1.0.17.28: fix bug in the newfangled constant dumping scheme
Nikodemus Siivola [Thu, 5 Jun 2008 16:32:37 +0000 (16:32 +0000)]
1.0.17.28: fix bug in the newfangled constant dumping scheme

 * When MAYBE-EMIT-MAKE-LOAD-FORMS elects to use the name to dump
   something, it better use the name to refer to the _whole_ object,
   and not just a subpart...

 * Use XSET for niceness in there as well. ...but XSET should really
   be replaced by a sane tree-based version...

 * Test-case by Kevin Reid.

16 years ago1.0.17.27: delete aborted fasls in _all_ cases
Nikodemus Siivola [Thu, 5 Jun 2008 08:47:39 +0000 (08:47 +0000)]
1.0.17.27: delete aborted fasls in _all_ cases

 * Unwinding from the compiler with a non-compiler error used to
   leave the fasl lying around.

 * Reported by Attila Lendvai.

16 years ago1.0.17.26: Fix regression in LOAD
Richard M Kreuter [Wed, 4 Jun 2008 18:50:26 +0000 (18:50 +0000)]
1.0.17.26: Fix regression in LOAD

* Between 1.0.16 and 1.0.17 LOAD began to return NIL when the argument
  had a non-NIL type and didn't name a file.  Fixed with tests.

* Additionally, writing the tests exposed an odd type restriction:
  LOAD's IF-DOES-NOT-EXIST argument was declared as having type
  (MEMBER :ERROR :CREATE NIL), but the CLHS just says it's a
  generalized boolean.

16 years ago1.0.17.25: allow dumping of references to arbitrary named constants
Nikodemus Siivola [Wed, 4 Jun 2008 17:02:17 +0000 (17:02 +0000)]
1.0.17.25: allow dumping of references to arbitrary named constants

 * While ANSI does not require us to do this, supporting this allows
   users to write code like:

     (unless (boundp 'f) (defconstant f (lambda () 'foo!)))
     (defun foo () f)

   ...which pre 1.0.17.3 SBCL also allowed.

16 years ago1.0.17.24: refactor handling of constants in the compiler
Nikodemus Siivola [Wed, 4 Jun 2008 12:39:38 +0000 (12:39 +0000)]
1.0.17.24: refactor handling of constants in the compiler

 * Coalesce non-circular lists, bit-vectors, and non-base-strings in the
   file-compiler. (We could do more, but these are the "easy" ones.) Takes
   care of OPTIMIZATIONS #34 in practice: outside the file compiler one can
   still trick the system into similar behaviour, but that seems a fairly
   academic concern.

 * Never go through SYMBOL-VALUE at runtime to fetch the value of a constant
   variable in compiled code.

 * Use (SYMBOL-VALUE <NAME>) as the load-form to dump references to named
   constants into fasls.

 * Signal a continuable error if an attempt to change the SYMBOL-VALUE of a
   constant variable is made.

 * Assignments to undefined variables go through SET, so that one
   cannot accidentally modify a constant by doing something like:

    (defun set-foo (x) (setq foo x))
    (defconstant foo 42)
    (set-foo 13)

 * Gets rid of INFO :VARIABLE :CONSTANT-VALUE, and just uses SYMBOL-VALUE to
   store constant values.

 * Move definition of SB!XC:LAMBDA-LIST-KEYWORDS to be beginning of the build,
   and use it instead of the host LAMBDA-LIST-KEYWORDS where appropriate.

 * Tests.

16 years ago1.0.17.23: respect displacement indices when trimming strings (regression 1.0.12.23)
Nikodemus Siivola [Tue, 3 Jun 2008 16:00:15 +0000 (16:00 +0000)]
1.0.17.23: respect displacement indices when trimming strings (regression 1.0.12.23)

 * Revealed by ansi-tests.

16 years ago1.0.17.22: respect fill-pointers when trimming strings (regression 1.0.12.23)
Nikodemus Siivola [Tue, 3 Jun 2008 15:27:21 +0000 (15:27 +0000)]
1.0.17.22: respect fill-pointers when trimming strings (regression 1.0.12.23)

 * Revealed by ansi-tests.

16 years ago1.0.17.21: LIST-FILL* return value (regression 1.0.12.16)
Nikodemus Siivola [Tue, 3 Jun 2008 15:07:03 +0000 (15:07 +0000)]
1.0.17.21: LIST-FILL* return value (regression 1.0.12.16)

 * Revealed by ansi-tests.

16 years ago1.0.17.20: NIL is a legal function name (regression 1.0.13.38)
Nikodemus Siivola [Tue, 3 Jun 2008 15:01:45 +0000 (15:01 +0000)]
1.0.17.20: NIL is a legal function name (regression 1.0.13.38)

 * Revealed by ansi-tests.

16 years ago1.0.17.19: fix interpreted structure constructors (regression since 1.0.17.4)
Nikodemus Siivola [Mon, 2 Jun 2008 15:19:15 +0000 (15:19 +0000)]
1.0.17.19: fix interpreted structure constructors (regression since 1.0.17.4)

 * Add full definition for %MAKE-STRUCTURE-INSTANCE.

 * Test-case.

16 years ago1.0.17.18: handlers with non-required arguments (regression 1.0.17.8)
Nikodemus Siivola [Mon, 2 Jun 2008 13:31:39 +0000 (13:31 +0000)]
1.0.17.18: handlers with non-required arguments (regression 1.0.17.8)

 * DX-FLET doesn't currently handle non-required arguments, so don't
   use it when there are any.

 * Test-case.

16 years ago1.0.17.17: Add a conservative GC workaround to string-output-streams
Juho Snellman [Mon, 2 Jun 2008 03:17:15 +0000 (03:17 +0000)]
1.0.17.17: Add a conservative GC workaround to string-output-streams

        * Fill the lists of buffer pointers with NIL after producing
          the string. This reduces the likelyhood of the conservative
          GC hanging on to all of the buffers at once.

16 years ago1.0.17.16: Stop using EAI_NODATA
Juho Snellman [Mon, 2 Jun 2008 03:07:57 +0000 (03:07 +0000)]
1.0.17.16: Stop using EAI_NODATA

        * EAI_NODATA is deprecated since RFC 3493, and has now been
          removed from glibc headers. Stop using it in sb-bsd-sockets.
          Fixes Fedora Core 9 build.

16 years ago1.0.17.15: Clean up after sb-cover tests
Juho Snellman [Mon, 2 Jun 2008 02:03:59 +0000 (02:03 +0000)]
1.0.17.15: Clean up after sb-cover tests

        * No point in having the install scripts install the html files
          produced while running tests. This was causing problems for
          some Linux distributions that require all installed files to have
          completely predictable names, whereas the test output files
          would have names that depended on the exact build directory name.

16 years ago1.0.17.14: slightly better LIST*
Nikodemus Siivola [Sat, 31 May 2008 17:43:12 +0000 (17:43 +0000)]
1.0.17.14: slightly better LIST*

 * Disable type-checks in full calls to LIST*, because we know the &REST
   list is a proper list.

 * Handle 1 argument case in the source-transform.

 * Add a derive-type optimizer, so we can figure out the common case
   when the return value is know to be a CONS.

16 years ago1.0.17.13: grab-bag of SB-SPROF enhancements
Nikodemus Siivola [Fri, 30 May 2008 18:26:10 +0000 (18:26 +0000)]
1.0.17.13: grab-bag of SB-SPROF enhancements

 * Added support for wallclock profiling. (Good for noticing waits
   that do not incur run time penalties.)

 * Added keyword arguments :SORT-ORDER (:ASCENDING or :DESCENDING) and
   :SORT-BY (:SAMPLES or :CUMULATIVE-SAMPLES) to REPORT, defaulting to
   :DESCENDING and :SAMPLES as before. Makes eyeballing flat reports
   easier, since often cumulative samples are the ones one should pay
   attention to (esp. for :CPU and :TIME profiling.)

 * Added support for profiling specific threads. New default is to
   profile only the current thread when using WITH-PROFILING, and all
   threads when using START-PROFILING -- :THREADS argument to both
   WITH-PROFILING and START-PROFILING can be used to specify other
   either a specific list of threads to profile, or :ALL to profile
   all threads. (In the future we might want to add eg. :CHILDREN to
   WITH-PROFILING, etc.)

   ** For :CPU profiling the signal handler simply filters out the
      threads we are not profiling.

   ** For :ALLOC profiling, *ALLOC-SIGNAL* is now thread local, and
      the profiler frobs the global *DEFAULT-ALLOC-SIGNAL* and local
      *ALLOC-SIGNAL*s as needed. Before the runtime delivers the
      allocation SIGPROF, it sets *ALLOC-SIGNAL* to T to prevent
      problems with recursive allocation signals (seem better then
      binding it in the handler, since we cannot really bind it quite
      early enough no matter what we do.)

   ** For :TIME profiling, we set up a timer that uses SIGPROF and
      pthread_kill to notify threads.

 * Use system locking macros instead of separate WITHOUT-GCING and
   WITHOUT-INTERRUPTS for cleanliness.

 * Make REPORT report the correct sample/alloction interval, and list
   the threads sampled.

16 years ago1.0.17.12: win32 build fix
Nikodemus Siivola [Fri, 30 May 2008 18:02:32 +0000 (18:02 +0000)]
1.0.17.12: win32 build fix

 * ...no signals on win32. Hopefully it now works.

16 years ago1.0.17.11: unithread build fix
Nikodemus Siivola [Fri, 30 May 2008 17:56:19 +0000 (17:56 +0000)]
1.0.17.11: unithread build fix

 * Use thread_sigmask, not pthread_sigmask.

16 years ago1.0.17.10: correct stack alignment for alloc() calls on Darwin/x86
Nikodemus Siivola [Fri, 30 May 2008 17:29:27 +0000 (17:29 +0000)]
1.0.17.10: correct stack alignment for alloc() calls on Darwin/x86

 * 16 bytes at the point of call, not 16 bytes at some random-point-
   then-push-two-words.

16 years ago1.0.17.9: grab-bag of PCL hackery
Nikodemus Siivola [Fri, 30 May 2008 13:16:24 +0000 (13:16 +0000)]
1.0.17.9: grab-bag of PCL hackery

 * Make REAL-ADD-METHOD suck slightly less: instead of paying for
   generic dispatch for all METHOD-FOO accessors, use a single call
   to a method that gets the benefit of permutation vectors and
   returns all we want as multiple values.

   ...this assumes that users are not allowed to override METHOD-FOO
   accessors. My current reading of AMOP is that overriding them is
   not specified at all -- but if someone needs it, we can use
   CLASS-EQ specializer magic to make that work.

 * A smattering of :TEST #'EQs for PUSHNEW, MEMBER, and ADJOIN.

 * Global specializer tables need to be synchronized now that our
   hash-tables aren't thread safe by default anymore.

16 years ago1.0.17.8: use dynamic-extent in HANDLER-CASE and HANDLER-BIND
Nikodemus Siivola [Fri, 30 May 2008 11:32:13 +0000 (11:32 +0000)]
1.0.17.8: use dynamic-extent in HANDLER-CASE and HANDLER-BIND

 * Hairier then I would have liked due to need not to leak the stack
   allocation policy to user code. See my email to sbcl-devel: "Future
   of sb-c:stack-allocate-dynamic-extent" for related discussion.

 * Also eliminate one redundant FLOAT-WAIT by splitting HANDLER-BIND
   into two parts, and using the more primitive one -- one that doesn't
   inject FLOAT-WAIT on its -- to implement HANDLER-CASE.

16 years ago1.0.17.7: smaller and faster raw slot initialization on x86oids
Nikodemus Siivola [Thu, 29 May 2008 16:11:09 +0000 (16:11 +0000)]
1.0.17.7: smaller and faster raw slot initialization on x86oids

 * Since %MAKE-STRUCTURE-INSTANCE knows exactly how long the instance
   will be, RAW-INSTANCE-INIT/* VOPs don't need to fetch the length at
   all, but can receive it as a direct argument.

 * Use (* INDEX N-WORD-BYTES) in MAKE-EA-FOR-RAW-SLOT instead of
   (FIXNUMIZE INDEX) -- same result, but the intention becomes clear.

16 years ago1.0.17.6: fix bug introduced by 1.0.7.3
Nikodemus Siivola [Thu, 29 May 2008 11:16:52 +0000 (11:16 +0000)]
1.0.17.6: fix bug introduced by 1.0.7.3

 * References to named constants now need MAYBE-EMIT-LOAD-FORM as well
   -- so we may just as well move it to FIND-CONSTANT.

 * Test-case, adepted from Swank.

16 years ago1.0.17.5: alter PROBE-FILE so that no signal is raised during its execution.
Richard M Kreuter [Thu, 29 May 2008 00:53:35 +0000 (00:53 +0000)]
1.0.17.5: alter PROBE-FILE so that no signal is raised during its execution.

16 years ago1.0.17.4: support for dynamic-extent structures
Nikodemus Siivola [Wed, 28 May 2008 22:32:28 +0000 (22:32 +0000)]
1.0.17.4: support for dynamic-extent structures

 * Replace %MAKE-INSTANCE-WITH-LAYOUT with %MAKE-STRUCTURE-INSTANCE,
   which has an IR2 transform that can handle both initialization and
   allocation of the structure. On x86 and x86-64 it can initialize
   all slots, whereas on other platforms it only does the layout and
   non-raw slots. (See RAW-INSTANCE-INIT/* below.)

 * EMIT-INITS needs two new kinds of inits to handle: :SLOT for
   instance slots, and :DD for the defstruct-description/layout.

 * DEF-ALLOC doesn't anymore use a simple boolean for denoting
   variable length allocation, but instead a keyword: either
   :VAR-ALLOC, :FIXED-ALLOC, or :STRUCTURE-ALLOC.

 * New VOPs: RAW-INSTANCE-INIT/* for all raw slot types, which are
   almost identical to RAW-INSTANCE-SET[-C]/* VOPs, except that they
   always have a constant index and do not return a result. Structures
   with raw slots can be stack allocated only on platforms that
   implement these VOPs, denoted in make-config.sh by the
   :RAW-INSTANCE-INIT-VOPS feature. ...we really could use a
   *VM-FEATURES* or something.

16 years ago1.0.17.3: unify CONSTANT nodes for DEFCONSTANT and literal constants
Nikodemus Siivola [Wed, 28 May 2008 16:23:12 +0000 (16:23 +0000)]
1.0.17.3:  unify CONSTANT nodes for DEFCONSTANT and literal constants

 * Prevents at least some cases which used to introduce duplicate
   constants into code objects.

 * The above causes all CONSTANTS being :DEFINED and anonymous, which
   is generally speaking not a problem, but causes trouble for XREF,
   which wants to generate REFERENCES information for constants as
   well. ...so, we add a %SOURCE-NAME slot to REF, allowing us to have
   references to a shared constant under multiple names.

 * Test-case.

16 years ago1.0.17.2: better PRINT-OBJECT method for threads
Nikodemus Siivola [Wed, 28 May 2008 16:00:35 +0000 (16:00 +0000)]
1.0.17.2: better PRINT-OBJECT method for threads

 * In addition to name, if any, print current state (RUNNING, ABORTED, or
   FINISHED), and any values returned by the thread if it has finished.

16 years ago1.0.17.1: describe_tread_state() for GDB convenience
Nikodemus Siivola [Wed, 28 May 2008 15:57:52 +0000 (15:57 +0000)]
1.0.17.1: describe_tread_state() for GDB convenience

 * Add describe_thread_state() to runtime, intended to be mainly
   called from GDB: prints out important bits of the current signal
   mask, and values of some special variables.

16 years ago1.0.17: release
Christophe Rhodes [Wed, 28 May 2008 12:00:04 +0000 (12:00 +0000)]
1.0.17: release
will be tagged as sbcl_1_0_17