sbcl.git
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.

13 years ago1.0.42.15: prevent inline expansion from creating refs to dead lambda-vars
Nikodemus Siivola [Wed, 1 Sep 2010 14:42:09 +0000 (14:42 +0000)]
1.0.42.15: prevent inline expansion from creating refs to dead lambda-vars

 * Fixes lp#454681.

 * Patch by Alexey. In his words, in reference to the test-case:

   (multiple-value-bind (iterator+977 getter+978)
       (does-not-exist-but-does-not-matter)
     (flet ((iterator+976 ()
              (funcall iterator+977)))
       (declare (inline iterator+976))
       (let ((iterator+976 #'iterator+976))
         (funcall iterator+976)))))

   Inline expansion of ITERATOR+976 tries to refer to a dead
   LAMBDA-VAR ITERATOR+977 of varargs entry, which was substituted
   with ITERATOR+977 of &OPTIONAL processor. Thus the referenced
   variable is dead and is not bound anywhere.

   The attached patch fixes the problem by giving up on inline
   expansion if it tries to make a reference to a dead LAMBDA-VAR,
   similar to the way dead BLOCK tags are treated.

13 years ago1.0.42.14: socket-connect thread safety, version 2
Nikodemus Siivola [Wed, 1 Sep 2010 14:14:55 +0000 (14:14 +0000)]
1.0.42.14: socket-connect thread safety, version 2

 * Code from 1.0.40.7 to use getprotobyname_r.

 * Use grovel-features.sh to check for its and getprotobynumber_r's
   existence, and add feature :os-provides-getprotoby-r when so.

   If they do not exist, use a lock instead.

13 years ago1.0.42.13: update ASDF to 2.004
Nikodemus Siivola [Wed, 1 Sep 2010 12:26:00 +0000 (12:26 +0000)]
1.0.42.13: update ASDF to 2.004

 * Patch by Faré Rideau, lp#605260.

   (Not quite as-is: I split the git scripting from the makefile into
    pull-asdf.sh for clarity.)

13 years ago1.0.42.11: reinline nested LIST and VECTOR calls in MAKE-ARRAY initial-contents
Nikodemus Siivola [Wed, 1 Sep 2010 11:53:16 +0000 (11:53 +0000)]
1.0.42.11: reinline nested LIST and VECTOR calls in MAKE-ARRAY initial-contents

 * Fixes lp#586105.

 * The source transform for MAKE-ARRAY makes LIST and VECTOR notinline
   so that the deftransforms can pick initial-contents and dimensions
   apart.

   However, when a list or vector in initial-contents is not part of
   the initialization structure but an actual initialization value,
   then notinline loses both performance in general, and foils nested
   DX in particular.

   So, walk the initial-contents and restore inlining for the actual
   initialization values.

13 years ago1.0.42.11: SB-EXT:WORD for use with ATOMIC-INCF &co
Nikodemus Siivola [Wed, 1 Sep 2010 09:15:14 +0000 (09:15 +0000)]
1.0.42.11: SB-EXT:WORD for use with ATOMIC-INCF &co

 (Symbol previously known as SB-VM:WORD.)

 * Requiring users to #+ their way to (UNSIGNED-BYTE 32) and 64 is
   just mean and brittle.

13 years ago1.0.42.10: guard against time travel by getrusage()
Nikodemus Siivola [Tue, 31 Aug 2010 15:23:50 +0000 (15:23 +0000)]
1.0.42.10: guard against time travel by getrusage()

 * Fixes lp#544421, we hope.

 * Apparently sometimes getrusage() returns a smaller value on second
   call -- this seems to happen under pretty extreme loads, mostly --
   which we want to guard against.

13 years ago1.0.42.9: fix defmethod declarations for aliases of builtin classes as specializers
Nikodemus Siivola [Tue, 31 Aug 2010 14:29:15 +0000 (14:29 +0000)]
1.0.42.9: fix defmethod declarations for aliases of builtin classes as specializers

 * Fixes lp#618387.

 * When we have a :defined class that we want a type declaration for, don't use
   the name we used to look up the class, but the CLASS-NAME of the class.

13 years ago1.0.42.8: fix build on OpenBSD/i386 -current and upcoming 4.8 release
Nikodemus Siivola [Tue, 31 Aug 2010 13:04:54 +0000 (13:04 +0000)]
1.0.42.8: fix build on OpenBSD/i386 -current and upcoming 4.8 release

 * Patch by Josh Elsasser, lp#615489.

 * On OpenBSD/i386, the structure that stores the FPU state during
   signals was recently moved.

   Add a script to tools-for-build/ which is run from make-config.sh
   to detect where the FPU state is located, and create a
   src/runtime/openbsd-sigcontext.h header containing a #define which
   src/runtime/x86-bsd-os.c can use.

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

 * Missing NEWS entry for last commit.

13 years ago1.0.42.7: fix shell scripts on Solaris (and FreeBSD?)
Nikodemus Siivola [Tue, 31 Aug 2010 12:46:41 +0000 (12:46 +0000)]
1.0.42.7: fix shell scripts on Solaris (and FreeBSD?)

 * Patch by Josh Elsasser, lp#615497.

 * Fixes for run-sbcl.sh and tests/subr.sh on Solaris, some of which I
   believe were also necessary on FreeBSD.

 * A missing #include needed on Solaris is also added.

13 years ago1.0.42.6: fix os-provides-dladdr-test.c
Nikodemus Siivola [Tue, 31 Aug 2010 12:26:44 +0000 (12:26 +0000)]
1.0.42.6: fix os-provides-dladdr-test.c

  For dladdr to be present in dlfcn.h, #define _GNU_SOURCE should be
  before any includes.

  Patch by Stas Boukarev.

13 years ago1.0.42.5: revert 1.0.42.2, "correct defknown for data-vector-ref-with-offset"
Nikodemus Siivola [Tue, 31 Aug 2010 11:27:35 +0000 (11:27 +0000)]
1.0.42.5: revert 1.0.42.2, "correct defknown for data-vector-ref-with-offset"

 Adjusting the defknown also requires adjusting the VOPs to accept negative
 indexes, and since I don't have time right now to audit the sign handling
 in them, I'm reverting for now.

 Saga continues on https://bugs.launchpad.net/sbcl/+bug/622958

13 years ago1.0.42.4: fix compiler-macros for WRITE and WRITE-TO-STRING
Nikodemus Siivola [Mon, 30 Aug 2010 15:06:46 +0000 (15:06 +0000)]
1.0.42.4: fix compiler-macros for WRITE and WRITE-TO-STRING

 * Based on patch by Stas Boukarev, lp#598374 and lp#581564.

 * Handle output-stream designators in WRITE.

 * Avoid name capture in WRITE-TO-STRING.

13 years ago1.0.42.3: DOTIMES and non-integer counts
Nikodemus Siivola [Mon, 30 Aug 2010 11:13:18 +0000 (11:13 +0000)]
1.0.42.3: DOTIMES and non-integer counts

 * For non-literal non-integer counts we already did the right thing,
   but eg. literal floats slipped under the radar.

 * Patch by Roman Marynchak, lp#619393.

13 years ago1.0.42.2: correct defknown for data-vector-ref-with-offset
Nikodemus Siivola [Mon, 30 Aug 2010 10:44:59 +0000 (10:44 +0000)]
1.0.42.2: correct defknown for data-vector-ref-with-offset

 * If the offset is positive, the index can be negative and still
   correct.

 * Fixes lp#622958

13 years ago1.0.42.1: add release script
Christophe Rhodes [Sun, 29 Aug 2010 14:33:50 +0000 (14:33 +0000)]
1.0.42.1: add release script

The script automates many of the tasks involved in performing the minimum
level of sanity checking that I am comfortable with, and enumerates others
that remain unscriptable despite 10 years of user interface "improvements"
at Sourceforge.  It is unlikely to generalise to other release managers'
setups and taste without a little effort.

13 years ago1.0.42: will be tagged as sbcl_1_0_42
Christophe Rhodes [Sun, 29 Aug 2010 14:13:26 +0000 (14:13 +0000)]
1.0.42: will be tagged as sbcl_1_0_42

13 years ago1.0.41.56: Fix for asdf-install (launchpad bug #612998)
Christophe Rhodes [Tue, 24 Aug 2010 16:27:02 +0000 (16:27 +0000)]
1.0.41.56: Fix for asdf-install (launchpad bug #612998)

Reported by Phil Hargett; patch by Jim Wise from Phil's description

13 years ago1.0.41.55: Solaris fixes
Juho Snellman [Mon, 23 Aug 2010 23:21:27 +0000 (23:21 +0000)]
1.0.41.55: Solaris fixes

     * Remove bashisms.
     * Conditionalize out some constants and functions that
       don't exist on Solaris.
     * Patch from Jim Wise.

13 years ago1.0.41.54: fix binary-distribution.sh for configurable prefixes
Nikodemus Siivola [Sat, 21 Aug 2010 09:41:15 +0000 (09:41 +0000)]
1.0.41.54: fix binary-distribution.sh for configurable prefixes

 ...that is, also include the file prefix.def, which specifies where
 the system is configured to install. Now that I think of it, it might
 be more elegant to be able to query the runtime about its default
 SBCL_HOME, actually...

 Thanks to Bruce O'Neel.

13 years ago1.0.41.53: more make.sh tweakery, part N
Nikodemus Siivola [Wed, 18 Aug 2010 14:56:59 +0000 (14:56 +0000)]
1.0.41.53: more make.sh tweakery, part N

 Aka stuff that was supposed to be in .52, but got left out.

 * Create output/ if necessary for saving the prefix.

 * Put back the semicolon that fell on the floor and rolled into a corner.

 Scripting is hard, dammit.

13 years ago1.0.41.52: more make.sh tweakery
Nikodemus Siivola [Wed, 18 Aug 2010 14:49:27 +0000 (14:49 +0000)]
1.0.41.52: more make.sh tweakery

 * Empty string as the value for an option is treated as if the option
   wasn't provided at all, which makes scripting builds easier.

 * Temporary support for legacy-style xc host specifications for the
   benefit of clbuild &co. Add a noisy message to the end of the build
   so people will hopefully notice.

13 years ago1.0.41.51: eliminate accidental bash-ism from run-sbcl.sh
Nikodemus Siivola [Tue, 17 Aug 2010 16:06:34 +0000 (16:06 +0000)]
1.0.41.51: eliminate accidental bash-ism from run-sbcl.sh

 Thanks to Josh "Eagle Eye" Elsasser.

13 years ago1.0.41.50: additional error checking for DEFTYPE &co
Nikodemus Siivola [Tue, 17 Aug 2010 12:26:24 +0000 (12:26 +0000)]
1.0.41.50: additional error checking for DEFTYPE &co

 Based on patch by Roman Marynchak.

 * Make PARSE-DEFMACRO check that the lambda-list is actually a list.

 * Define BAD-TYPE as an utility to signal SIMPLE-TYPE-ERRORS, instead
   of having to write the keyword calls everywhere.

 * Fixes https://bugs.launchpad.net/sbcl/+bug/576594

13 years ago1.0.41.49: comment on patch submission formats in STYLE
Nikodemus Siivola [Tue, 17 Aug 2010 12:21:32 +0000 (12:21 +0000)]
1.0.41.49: comment on patch submission formats in STYLE

 Also edit the prose from I -> we at least in a few places to
 avoid confusion.

13 years ago1.0.41.48: make run-sbcl.sh work on Darwin (and presumably other BSD-clones)
Nikodemus Siivola [Tue, 17 Aug 2010 11:35:24 +0000 (11:35 +0000)]
1.0.41.48: make run-sbcl.sh work on Darwin (and presumably other BSD-clones)

 * BSD readlink doesn't support -f, fall back on dirname if readlink
   didn't work.

13 years ago1.0.41.47: (EXPT 0.0 0.0) and (EXPT 0 0.0) to signal an error
Nikodemus Siivola [Mon, 16 Aug 2010 12:53:42 +0000 (12:53 +0000)]
1.0.41.47: (EXPT 0.0 0.0) and (EXPT 0 0.0) to signal an error

 https://bugs.launchpad.net/sbcl/+bug/571581

 From patch by Roman Marynchack.

13 years ago1.0.41.46: further make.sh tweaks
Nikodemus Siivola [Mon, 16 Aug 2010 11:44:28 +0000 (11:44 +0000)]
1.0.41.46: further make.sh tweaks

 * Remove OpenMCL and Clisp examples from make.sh help
   string. Builders who need them should be able to figure them
   out. From the SBCL and CMUCL examples, I think -- and this way they
   won't go stale...

 * Also check for empty arguments to --foo= style command line options.

13 years ago1.0.41.45: make.sh command-line parsing
Nikodemus Siivola [Sun, 15 Aug 2010 13:59:00 +0000 (13:59 +0000)]
1.0.41.45: make.sh command-line parsing

 Based on patches by Daniel Herring:

 * Simple --option and --option=arg command-line parser in make.sh.

 * Supported options:

   ** --xc-host=<command> to specify XC host option instead of a
      positional argument. (Incompatible change!)

   ** --prefix=<path> to specify a non-standard install location for
      both build and install.sh.

      Addresses https://bugs.launchpad.net/sbcl/+bug/550889

   ** --help

 Semi-related minor cleanup:

 * Use --no-userinit and --no-sysinit instead of version.lisp-expr as
   the default inits for self-building: they have been around long
   enough now that it should not stop anyone from building, and makes
   for a somewhat less magical looking "//Build options: ..." line in
   the build log.

13 years ago1.0.41.44: runtime: Fix build on non-threaded x86oids.
Alastair Bridgewater [Wed, 11 Aug 2010 14:59:01 +0000 (14:59 +0000)]
1.0.41.44: runtime: Fix build on non-threaded x86oids.

  * In 1.0.41.21, I accidentally broke non-threaded x86oid builds.

  * Reported by Josh Elsasser and Bruce O'Neel with patches
provided, and Harald Hanche-Olsen without a patch.

  * This fix based on the patch by Josh Elsasser.

13 years ago1.0.41.43: fix for RENAME-PACKAGE's return value
Christophe Rhodes [Tue, 10 Aug 2010 10:59:04 +0000 (10:59 +0000)]
1.0.41.43: fix for RENAME-PACKAGE's return value

Patch from Eric Marsden (sbcl-devel 2010-07-26)

13 years ago1.0.41.42: ppc: Documentation and NEWS updates for threading.
Alastair Bridgewater [Sun, 8 Aug 2010 01:14:39 +0000 (01:14 +0000)]
1.0.41.42: ppc: Documentation and NEWS updates for threading.

  * Threading now officially experimentally supported on Linux/PPC.

  * Added PPC Linux to the list of platforms with experimental
thread support in the INSTALL file and the manual.

  * Updated NEWS.

13 years ago1.0.41.41: tests: Fix tests for ppc-threading changes.
Alastair Bridgewater [Sun, 8 Aug 2010 01:14:23 +0000 (01:14 +0000)]
1.0.41.41: tests: Fix tests for ppc-threading changes.

  * The variable current_control_stack_pointer is no longer valid
on threaded targets.  Substitute thread_control_stack_size, which
is valid on all targets, fixing alien.impure.lisp.

  * Some dynamic-extent tests currently fail on threaded PPC.
Updated :fails-on information in dynamic-extent.impure.lisp.

  * Test (:timer :parallel-unschedule) locked up my linux/ppc box
when running.  Disabled, fixing timer.impure.lisp.  Interestingly,
while the lockup in question killed the keyboard and the mouse,
briefly pressing the power button caused backlogged events to be
processed, and repeatedly pressing the power button eventually
unlocked the system completely.

  * Test (:interrupt-thread :interrupt-consing-child :again) uses
sb-kernel:*pseudo-atomic-bits*, which is an x86oid-only symbol
(other ports use various parts of reg_ALLOC instead).  Disabled the
test on non-x86oid ports, fixing threads.impure.lisp.

13 years ago1.0.41.40: ppc: Shorten the gencgc allocation sequence.
Alastair Bridgewater [Sun, 8 Aug 2010 01:14:04 +0000 (01:14 +0000)]
1.0.41.40: ppc: Shorten the gencgc allocation sequence.

  * Rearrange the allocation sequence to avoid all branches,
relying on the runtime to manipulate the point at which
execution resumes from an allocation trap to compensate.

  * Update the runtime to match the new allocation sequence.

  * There is a further possible optimization here: The runtime
allocation trap handler can also accept an ADDI instruction
where the current sequence uses an ADD.  In the case of a
fixed allocation size, this would save loading the temp
register with the size.

  * Another optimization, along the same lines as the previous
one: With a fixed allocation size, adjusting the pointer to
point to the beginning of the data block and setting the lowtag
could be done in a single instruction.

  * A third optimization, one which would entail modifying the
allocation trap handler slightly, and depends on at least the
first optimization above being in place: Once temp-tn is no
longer being used to hold the allocation size for fixed
allocations, it is available to hold the address of the
alloc region when threading is disabled, thus saving having to
reload it (two instructions).

13 years ago1.0.41.39: ppc: Rename reg_L2 to reg_THREAD on threaded builds.
Alastair Bridgewater [Sun, 8 Aug 2010 01:13:50 +0000 (01:13 +0000)]
1.0.41.39: ppc: Rename reg_L2 to reg_THREAD on threaded builds.

  * This is largely to make the disassembly less confusing when it
refers to TLS slots and other per-thread data.

13 years ago1.0.41.38: ppc: Runtime damage for threads.
Alastair Bridgewater [Sun, 8 Aug 2010 01:13:36 +0000 (01:13 +0000)]
1.0.41.38: ppc: Runtime damage for threads.

  * Call out to pthread_getspecific() from call_into_lisp in
order to obtain the TLS block for lisp operation.

  * Tie together the runtime / gencgc version of pseudo-atomic
and the arch-specific / interrupt context version of pseudo-
atomic, to fulfill the requirements of the earlier pseudo-
atomic restructuring.

  * Generally use the thread structure instead of global
variables where appropriate.

  * Save our TLS block in the pthread per-thread storage area.

  * SIG_STOP_FOR_GC appears to default to masked on PPC, so
unblock it in initial_thread_trampoline().

  * Link with -lpthread when appropriate.

13 years ago1.0.41.37: ppc: allocation fixes for threaded builds.
Alastair Bridgewater [Sun, 8 Aug 2010 01:13:20 +0000 (01:13 +0000)]
1.0.41.37: ppc: allocation fixes for threaded builds.

  * Use the alloc region in the thread structure instead of the
global boxed_region.

13 years ago1.0.41.36: ppc: Implement atomic-{incf,decf} as atomic operations.
Alastair Bridgewater [Sun, 8 Aug 2010 01:13:06 +0000 (01:13 +0000)]
1.0.41.36: ppc: Implement atomic-{incf,decf} as atomic operations.

  * ATOMIC-INCF and ATOMIC-DECF require a VOP in order to serve as
actual atomic operations.  This VOP is also required to serve as a
memory barrier.  Implemented.

13 years ago1.0.41.35: ppc: Implement compare-and-swap-vops.
Alastair Bridgewater [Sun, 8 Aug 2010 01:12:49 +0000 (01:12 +0000)]
1.0.41.35: ppc: Implement compare-and-swap-vops.

  * Based roughly on the x86-64 version and the differences
between x86oid define-full-reffer and the PPC use of VOPs
instead (the VOPs seem smart enough, why do x86oids do the
whole define-full-reffer / -c VOP thing?).

  * Compare-and-swap VOPs are full memory barriers.

  * Left the VOPs conditionally-compiled in based on the
compare-and-swap-vops feature, more as documentation of what
is involved than anything else.

  * Enabled compare-and-swap-vops for all PPC targets.

13 years ago1.0.41.34: ppc: Implement multithreaded symbol binding / unbinding.
Alastair Bridgewater [Sun, 8 Aug 2010 01:12:28 +0000 (01:12 +0000)]
1.0.41.34: ppc: Implement multithreaded symbol binding / unbinding.

  * This is roughly based on the x86-64 version, but with TLS
allocation inline and synchronization made up with a copy of
"The PowerPC Architecture" in front of me.

  * This does not have any check for TLS index overflow.

  * Also implement the spinlock stuff used by the runtime to
do its TLS index allocation for dynamic binding.

13 years ago1.0.41.33: ppc: Implement threaded symbol value accessors.
Alastair Bridgewater [Sun, 8 Aug 2010 01:12:10 +0000 (01:12 +0000)]
1.0.41.33: ppc: Implement threaded symbol value accessors.

  * Based on the x86-64 versions, again.

  * This is just the accessors, not binding.

13 years ago1.0.41.32: ppc: Random small threading bits.
Alastair Bridgewater [Sun, 8 Aug 2010 01:11:55 +0000 (01:11 +0000)]
1.0.41.32: ppc: Random small threading bits.

  * Thread-specific static symbols (these should probably be
moved to the list of common static symbols).

  * The reader for random TLS data, current-thread-offset-sap.

  * On threaded targets, stepping is controlled by a slot in the
thread structure, not by a static-symbol.  Fixed.

  * On non-threaded targets, don't hit the static-symbol value with
yet another ad-hoc method of calculating the address, use the
existing load-symbol-value macro.

13 years ago1.0.41.31: ppc: Update backend to use TL symbol storage as appropriate.
Alastair Bridgewater [Sun, 8 Aug 2010 01:11:41 +0000 (01:11 +0000)]
1.0.41.31: ppc: Update backend to use TL symbol storage as appropriate.

  * This turned out to be all of the uses of the original
-symbol-value access macros... And all to do with NLX, to two
symbols not tied to particular slots in the thread structure.

13 years ago1.0.41.30: ppc: Add thread-local symbol-value accessor macros.
Alastair Bridgewater [Sun, 8 Aug 2010 01:11:27 +0000 (01:11 +0000)]
1.0.41.30: ppc: Add thread-local symbol-value accessor macros.

  * This is basically a straight rip of the x86-64 version.

  * These macros can only be used on static-symbols, so why
aren't we pre-allocating their TLS indices and making them
available at cross-compile time?  If we did, we could elide
a temp register on stores and a memory read on all accesses.

13 years ago1.0.41.29: ppc: Dedicate a register to the TLS-block on threaded builds.
Alastair Bridgewater [Sun, 8 Aug 2010 01:11:13 +0000 (01:11 +0000)]
1.0.41.29: ppc: Dedicate a register to the TLS-block on threaded builds.

  * Swipe L2 for our TLS block.

  * Set up a THREAD-BASE-TN while we're at it.

13 years ago1.0.41.28: ppc: Fix race conditions in use of pseudo-atomic in ppc-assem.S.
Alastair Bridgewater [Sat, 7 Aug 2010 15:23:10 +0000 (15:23 +0000)]
1.0.41.28: ppc: Fix race conditions in use of pseudo-atomic in ppc-assem.S.

  * Originally, ppc-assem.S was saving the pseudo-atomic-interrupted
bit before clearing the pseduo-atomc-atomic bit in reg_ALLOC.  This
introduces a single-instruction window wherein an interrupt could
occur, be deferred, and the setting of pseudo-atomic-interrupted be
ignored.

  * Fixed, in the four places it occurs, by reordering instructions.

13 years ago1.0.41.27: ppc: Calling convention fixes for assembly-routines calling static-funs.
Alastair Bridgewater [Sat, 7 Aug 2010 15:22:58 +0000 (15:22 +0000)]
1.0.41.27: ppc: Calling convention fixes for assembly-routines calling static-funs.

  * This is essentially the same as the static-fun VOP fixes from
earlier.

13 years ago1.0.41.26: ppc: Calling-convention fixes for static-fun VOPs.
Alastair Bridgewater [Sat, 7 Aug 2010 15:21:54 +0000 (15:21 +0000)]
1.0.41.26: ppc: Calling-convention fixes for static-fun VOPs.

  * Instead of having the static-fun VOPs work with the fdefn
raw-addr slot directly, have them first load reg_FDEFN with the
static-fdefinition object and then perform the critical part of
the normal call sequence.

  * This covers the usual race condition, etc. involved in dealing
with an fdefn-raw-addr without first loading the function, and
allows (PPC only) the use of funcallable instances and closures as
static-functions (unlikely as that is).

13 years ago1.0.41.25: compiler: Create sb!vm::static-fdefn-offset.
Alastair Bridgewater [Sat, 7 Aug 2010 15:19:51 +0000 (15:19 +0000)]
1.0.41.25: compiler: Create sb!vm::static-fdefn-offset.

  * Create sb!vm::static-fdefn-offset to provide the byte offset
from NIL to the tagged form of the fdefinition.

  * Reimplement sb!vm:static-fun-offset (a misnomer) in terms of
sb!vm::static-fdefn-offset.

13 years ago1.0.41.24: ppc: Calling-convention fixes for entry-point handling during named-call.
Alastair Bridgewater [Sat, 7 Aug 2010 15:19:41 +0000 (15:19 +0000)]
1.0.41.24: ppc: Calling-convention fixes for entry-point handling during named-call.

  * For GC purposes, seven times never load reg_LIP before loading
whatever register points to the object it refers to.

  * During named-call, load the function from the fdefn before
loading the raw-addr (which ends up in reg_LIP).  For simple-fun
objects, this provides the reference base for reg_LIP.  For other
objects this doesn't matter because reg_LIP ends up pointing to
either undefined_tramp or closure_tramp.

  * This still leaves a race condition when updating fdefinitions,
but fixes the race condition surrounding function calling.

  * To fix the remaining race condition, we would need to alter
the undefined function trampoline to appear to be a simple-fun
object and adjust the fdefn-fun accessors to compensate, then
arrange for "named" calls to load reg_LEXENV and do closure-fun
access in the same manner as the closure_tramp and the "unnamed"
call VOPs.  This would add another instruction to the call path,
but not another memory access (as we would trade off loading the
fdefn-raw-addr for loading the closure-fun).

13 years ago1.0.41.23: ppc: Calling-convention fixes for LRA handling during return.
Alastair Bridgewater [Sat, 7 Aug 2010 15:19:29 +0000 (15:19 +0000)]
1.0.41.23: ppc: Calling-convention fixes for LRA handling during return.

  * For GC purposes, seven times never clobber reg_CODE while still
within a component.

  * During return processing, store the LRA in reg_LRA instead of
reg_CODE (see previous point).

  * During fun end breakpoint processing, use reg_LRA instead of
reg_CODE to store the LRA object on ppc.

  * The upshot of this is that, during returns, the program counter
and link register can always be found within the body of reg_CODE
or reg_LRA, no matter which side of the blr instruction we check,
thus always allowing the GC to correctly update them.

13 years ago1.0.41.22: runtime: Rename backtrace() to lisp_backtrace().
Alastair Bridgewater [Sat, 7 Aug 2010 13:46:38 +0000 (13:46 +0000)]
1.0.41.22: runtime: Rename backtrace() to lisp_backtrace().

  * glibc provides a backtrace() function which can be useful for
debugging runtime problems, but we already have a backtrace()
function.  Rename our backtrace() function so that it cannot
collide with the glibc version.

13 years ago1.0.41.21: runtime: Current stack and frame pointers are per-thread data.
Alastair Bridgewater [Sat, 7 Aug 2010 13:46:26 +0000 (13:46 +0000)]
1.0.41.21: runtime: Current stack and frame pointers are per-thread data.

  * Add slots to the thread structure on threaded targets to hold
the control stack and frame pointers.

  * Add some macros to thread.h to grab the correct variable or
slot on all builds, and use them everywhere required.

  * Conditional-compile out the old global variables for this on
threaded targets (I probably messed this up).

13 years ago1.0.41.20: runtime: Straighten out access to binding stack pointers.
Alastair Bridgewater [Sat, 7 Aug 2010 13:46:12 +0000 (13:46 +0000)]
1.0.41.20: runtime: Straighten out access to binding stack pointers.

  * Unify all non-cheneygc access to binding stack pointers under
one common interface.

  * Non-threaded targets are unaffected.  Threaded targets with a
binding stack pointer register (reg_BSP) must use the pointer in
the thread structure rather than the global variable during call
in / call out when built with LISP_FEATURE_SB_THREAD.

13 years ago1.0.41.19: runtime: Fix pseudo-atomic on non-x86oid gencgc.
Alastair Bridgewater [Sat, 7 Aug 2010 13:45:56 +0000 (13:45 +0000)]
1.0.41.19: runtime: Fix pseudo-atomic on non-x86oid gencgc.

  * Pseudo-atomic is per-thread state, add it to struct thread.

  * Pass the correct pointer for accessing p-a in dynbind.c.

  * In {undo_,}fake_foreign_function_call(), stash reg_ALLOC as
pseudo-atomic-bits on threaded targets.

  * In pseudo-atomic.h, the ppc gencgc code is really non-x86oid
gencgc code.

  * Also in pseudo-atomic.h, update the non-x86oid gencgc code
to do the right thing with threaded pseudo-atomic-bits.

  * Due to the way dynamic binding works on threaded targets, it
is now a requirement that the arch_* pseudo_atomic functions call
the generic versions if foreign_function_call_active_p() is true
on threaded targets (in short, C code needs to be able to enter
pseudo-atomic, not just lisp code).

13 years ago1.0.41.18: threads: stop_for_gc_handler should check for foriegn contexts
Alastair Bridgewater [Sat, 7 Aug 2010 13:45:45 +0000 (13:45 +0000)]
1.0.41.18: threads: stop_for_gc_handler should check for foriegn contexts

  * stop_for_gc_handler() was unconditionally calling
fake_foreign_function_call(), even though a thread can legitimately
receive SIG_STOP_FOR_GC while in foreign code (and this is even the
normal situation when waiting for a mutex or waitqueue).

  * Use the now-idiomatic was_in_lisp variable fix: Check for an
active foreign-function call, only call fake_foreign_function_call
if the context is in lisp code, only undo the fake call if the
context was in lisp code.

13 years ago1.0.41.17: runtime: Make foreign_function_call_active work with threaded targets.
Alastair Bridgewater [Sat, 7 Aug 2010 13:42:40 +0000 (13:42 +0000)]
1.0.41.17: runtime: Make foreign_function_call_active work with threaded targets.

  * Add a slot to the thread structure for the active flag.

  * Make the existing global variable only show up on
unithread targets.

  * Introduce a wrapper macro to portably access the right
slot on both theaded and unithread targets.

  * KLUDGE things up to maintain the old behavior on x86oids
until someone gets around to fixing x86{,-64}-assem.S to set
foreign_function_call_active properly.

13 years ago1.0.41.16: non-linux ppc runtime fixes
Nathan Froyd [Sat, 7 Aug 2010 01:01:50 +0000 (01:01 +0000)]
1.0.41.16: non-linux ppc runtime fixes

Patch from Josh Elsasser to make things work on *BSD and Darwin.

13 years ago1.0.41.15: gencgc: Implement object pinning for non-x86oids.
Alastair Bridgewater [Fri, 6 Aug 2010 18:49:42 +0000 (18:49 +0000)]
1.0.41.15: gencgc: Implement object pinning for non-x86oids.

  * Add a new static symbol for all non-x86oid gencgc targets,
*pinned-objects*.

  * Bind *pinned-objects* to NIL during thread creation if it is
defined.

  * During garbage collection, where x86oids preserve pointers on
the various thread stacks, use the same mechanism to preserve
pointers linked on *pinned-objects* for each thread.

  * Change the PPC version of with-pinned-objects to rebind
*pinned-objects* with the new objects to pin prepended when using
gencgc.

13 years ago1.0.41.14: ppc: Treat counter register as an interior pointer during GC.
Alastair Bridgewater [Fri, 6 Aug 2010 18:49:23 +0000 (18:49 +0000)]
1.0.41.14: ppc: Treat counter register as an interior pointer during GC.

  * The PPC has a "counter" register which is a
previously-unacknowledged interior-pointer... But possibly
shouldn't be.

  * This breaks all non-linux PPC targets, due to GC now accessing
the counter register during interrupt context scavenging.  Those
who have access to such targets should find it simple to fix.

13 years ago1.0.41.13: gc: Fix interrupt context scavenging of interior pointers.
Alastair Bridgewater [Fri, 6 Aug 2010 18:48:53 +0000 (18:48 +0000)]
1.0.41.13: gc: Fix interrupt context scavenging of interior pointers.

  * Some registers, such as reg_LIP and the program counter, posess
the "interior pointer" nature, meaning that they are unboxed
registers that contain untagged pointers into heap space, relative
to some actual boxed ("pair") register.

  * The program counter is advertised as always being relative to
reg_CODE, but this is easily disproven.  The "npc" register on
platforms with branch-delay slots is the same, as is the link
register on PPC.

  * Rather than coming up with clever rules for which interior
pointer registers can refer to which pairs at which times, doing
object length tests for validity, and so on, just deal with all of
the interior pointer registers (plausibly up to five on any given
platform, though in practice three or four) as general interior
pointers.

  * Rather than dealing with massive code duplication for the
various interior pointer registers, come up with a clever macro
system to paper over the worst of the repetition.

  * Only pair interior-pointers to pointer values, never fixnums
or other-immediates.

  * Use the untagged "native pointer" value of a pair register
when computing the interior-pointer offset, preventing failure
to pair when the interior-pointer is to within the first two
words of the object.

13 years ago1.0.41.12: gc: Unify gencgc and cheneygc interrupt-context scavenging.
Alastair Bridgewater [Fri, 6 Aug 2010 18:48:19 +0000 (18:48 +0000)]
1.0.41.12: gc: Unify gencgc and cheneygc interrupt-context scavenging.

  * Both gencgc and cheneygc had separate copies of
scavenge_interrupt_contexts which had drifted out of sync over
time.

  * Resynchronized both versions and moved the result into
gc-common.c, which should prevent further desynchronization.

13 years ago1.0.41.11: gc: Interrupt contexts and stacks should be scavenged per-thread.
Alastair Bridgewater [Fri, 6 Aug 2010 18:47:50 +0000 (18:47 +0000)]
1.0.41.11: gc: Interrupt contexts and stacks should be scavenged per-thread.

  * Pass an explicit thread argument to scavenge_interrupt_contexts()
instead of having it call arch_os_get_current_thread(), saving the
extra call on cheneygc and allowing multiple threads on gencgc.

  * On gencgc, the same applies to scavenge_control_stack().

  * On gencgc, don't scrub the control stack when scavenging, wait
until after the scavenging is done (it's done by the stop-for-gc
handler on other threads).

  * On gencgc, scavenge interrupt contexts and control stacks for
all threads, not just the current thread.

  * On a minor note, the code for scavenging interrupt contexts is
largely unchanged between cheneygc and gencgc.  Perhaps it should
be re-unified in gc-common.c?

13 years ago1.0.41.10: gencgc: preserve context registers is not used on non-x86oids.
Alastair Bridgewater [Fri, 6 Aug 2010 18:46:51 +0000 (18:46 +0000)]
1.0.41.10: gencgc: preserve context registers is not used on non-x86oids.

  * Disable compilation of preserve_context_registers() on
threaded non-x86oid targets to prevent link errors.

13 years ago1.0.41.9: threads: Don't set static tls for non-static symbols.
Alastair Bridgewater [Fri, 6 Aug 2010 18:45:53 +0000 (18:45 +0000)]
1.0.41.9: threads: Don't set static tls for non-static symbols.

  * *binding-stack-pointer* and *alien-stack* are only static
symbols on x86oids.  Conditional-compile their static tls init
forms out based on their existence (in case they are removed
from one of the x86oids or introduced to some other target).

13 years ago1.0.41.8: x86/x86-64: Weaken read and write barrier operations.
Alastair Bridgewater [Thu, 5 Aug 2010 21:24:33 +0000 (21:24 +0000)]
1.0.41.8: x86/x86-64: Weaken read and write barrier operations.

  * It turns out that the read-barrier operation is only needed on
Pentium Pro systems for SMP operation.  This never worked right,
so there's no need to penalize other systems to support this.

  * It turns out that the write-barrier operation is only needed
on OOSTORE systems for SMP operation.  Thsi never worked right, so
there's no need to penalize other systems to support this.

  * It turns out that x86-64 systems are neither Pentium Pro nor
OOSTORE.

  * This breaks down if the barriers were required for device I/O
instead of SMP operation.  Should anyone actually need such
barriers, adding them to the existing framework separately should
be simple enough.

13 years ago1.0.41.7: threads: Document BARRIER macro and implicit barriers.
Alastair Bridgewater [Wed, 4 Aug 2010 18:04:21 +0000 (18:04 +0000)]
1.0.41.7: threads: Document BARRIER macro and implicit barriers.

  * Not much to say, new manual subsection under Threading.

  * Also added a NEWS entry for barriers.

13 years ago1.0.41.6: threads: Insert barriers as appear to be required.
Alastair Bridgewater [Wed, 4 Aug 2010 18:03:35 +0000 (18:03 +0000)]
1.0.41.6: threads: Insert barriers as appear to be required.

  * This is mainly for mutexes, spinlocks, and sb-concurrency
queues.

  * These are probably-necessary and appear to be sufficient.

13 years ago1.0.41.5: x86: Implement memory-barrier-vops.
Alastair Bridgewater [Wed, 4 Aug 2010 18:02:45 +0000 (18:02 +0000)]
1.0.41.5: x86: Implement memory-barrier-vops.

  * Add the VOPs for the various memory-barriers.

  * Add the memory-barrier-vops feature to local-target-features on
x86 in make-config.sh.

13 years ago1.0.41.4: x86-64: Implement memory-barrier-vops.
Alastair Bridgewater [Wed, 4 Aug 2010 18:01:29 +0000 (18:01 +0000)]
1.0.41.4: x86-64: Implement memory-barrier-vops.

  * Add the VOPs for the various memory-barriers.

  * Add the memory-barrier-vops feature to local-target-features on
x86-64 in make-config.sh.

13 years ago1.0.41.3: ppc: Implement memory-barrier-vops.
Alastair Bridgewater [Wed, 4 Aug 2010 17:59:25 +0000 (17:59 +0000)]
1.0.41.3: ppc: Implement memory-barrier-vops.

  * Add the VOPs for inlining the various memory-barriers.

  * Add the memory-barrier-vops feature to local-target-features on
ppc systems in make-config.sh.

13 years ago"1.0.41.2": threads: Add memory-barrier framework.
Alastair Bridgewater [Wed, 4 Aug 2010 17:58:15 +0000 (17:58 +0000)]
"1.0.41.2": threads: Add memory-barrier framework.

  * New file, src/code/barrier.lisp, containing the baseline
implementation.

  * Added the barrier functions to the compiler function database.

  * Export the interface macro, BARRIER, from SB!THREAD and the
underlying barrier functions from SB!VM.

  * Document a new architecture-dependent build-time feature,
MEMORY-BARRIER-VOPS, for controlling the behavior and inlining of
the interpreter stubs for the barrier functions.

13 years ago1.0.41.1: much faster MAKE-INITIAL-DFUN
Christophe Rhodes [Fri, 30 Jul 2010 21:01:12 +0000 (21:01 +0000)]
1.0.41.1: much faster MAKE-INITIAL-DFUN

Don't attempt to precompute any kind of effective methods in
MAKE-INITIAL-DFUN (called from COMPUTE-DISCRIMINATING-FUNCTION, among
other places), because C-D-F is called really quite often.

This allows us to delete FINALIZE-SPECIALIZERS and
PRECOMPUTE-EFFECTIVE-METHODS, respectively responsible for about 3% each of
the time in loading asdf.fasl.  We can also delete the INITIAL-DISPATCH
discriminating function kind, which (to my surprise) was already not
mentioned in the internals documentation about the possible dfun
states.

13 years ago1.0.41: will be tagged as sbcl_1_0_41
Christophe Rhodes [Fri, 30 Jul 2010 12:55:15 +0000 (12:55 +0000)]
1.0.41: will be tagged as sbcl_1_0_41