sbcl Log


Commit Date  
[de19b7] by Nikodemus Siivola Nikodemus Siivola

enable previously-broken thread tests on Darwin

WIN!?

I have not been able to make threaded SBCL on Darwin croak yet with the
semaphore implementation in the previous commit, so ... maybe.

I suspect the sb-concurrency tests can now be enabled on SunOS as well, but
since I don't have a box to test that hypothesis on, leaving them disabled
for now.

2011-12-05 16:38:39 Tree
[8340bf] by Nikodemus Siivola Nikodemus Siivola

semaphores in the runtime

Trivial refactorings:

* Rename STATE_SUSPENDED STATE_STOPPED for elegance. (Spells with the same
number of letters as STATE_RUNNING, things line up nicer.)

* Re-express make_fixnum in terms of MAKE_FIXNUM so that we can use the
latter to define STATE_* names in a manner acceptable to use in
switch-statements.

* Move Mach exception handling initialization to darwin_init from
create_initial_thread so that current_mach_task gets initialized before
the first thread struct is initialized.

The Beef:

Replace condition variables in the runtime with semaphores.

On most platforms use sem_t, but on Darwin use semaphore_t. Hide the
difference behind, os_sem_t, os_sem_init, os_sem_destroy, os_sem_post, and
os_sem_wait.

POSIX realtime semaphores are supposedly safe to use in signal handlers,
unlike condition variables -- and experimentally at least Mach semaphores
on Darwin are a lot less prone to problems.

(Our pthread mutex usage isn't quite kosher either, but it's the
pthread_cond_wait and pthread_cond_broadcast pair that seemed to be
causing most of the trouble.)

2011-12-05 16:38:38 Tree
[baa495] by Alastair Bridgewater Alastair Bridgewater

tests: fix :skipped-on clause for weak hash-table tests.

* During the original addition of :skipped-on, the condition for
skipping the weak hash-table tests was changed from "non-threaded
x86oids" to "everything but threaded non-x86oids". The actual
condition should be "non-threaded conservatively-scavenged-stack".

2011-12-05 14:35:53 Tree
[7c773f] by Alastair Bridgewater Alastair Bridgewater

tests: Add --report-skipped-tests option to the test runner.

* It is occasionally useful to see precisely which tests are
skipped on a given target, and there was no obvious way to so do.

2011-12-05 14:33:43 Tree
[14fd5a] by Alastair Bridgewater Alastair Bridgewater

Fail early when building with known-incompatible features.

* Essentially, fail as soon as we have the final shebang feature
list available.

* Only checks a small number of "obvious" cases for now.

2011-12-05 14:30:09 Tree
[7df3c1] by Stas Boukarev Stas Boukarev

Fix my previous commit on setf expansions.

Fix the case when `default' in (setf (getf x y default) z) isn't provided.

Add tests.

2011-12-05 11:47:13 Tree
[0b1c9f] by Nikodemus Siivola Nikodemus Siivola

adjust the new MALLOC-FAILURE test for 32-bit builds

...where malloc of (1- array-total-size-limit) bytes may actually
succeed initially.

2011-12-05 11:26:20 Tree
[3b46c7] by Stas Boukarev Stas Boukarev

Remove unused variable warnings in some setf expansions.

(let (list) (setf (getf list 'x 0) 10)) produced a style-warning on a
temporary variable for holding 0, which is unused.

Fixes lp#492071.

2011-12-05 11:22:53 Tree
[b19895] by Nikodemus Siivola Nikodemus Siivola

allow coercion of large fixnums to floats outside x86

The reason we need guard against this on x86 is due to the FPU there always
using double-precision internally, which can lead to us deriving an
inconsistent type unless the fixnum is exactly represented by a single-float.

However, no such danger exists outside x86.

(Test-suite already contains tests for this.)

2011-12-05 11:05:04 Tree
[261284] by Nikodemus Siivola Nikodemus Siivola

add support for package::form-read-in-package syntax

sb-c::(csubtypep (specifier-type 'fixnum) (specifier-type 'integer))

Isn't that lovely? The superbly fantasic thing is that this even works
*right* with package locks:

(in-package :cl-user)

sb-c::(defun some-internal-bit ...)

causes a package lock violation since the current package is back to CL-USER
by the type the code is executed.

2011-12-05 10:45:36 Tree
[628c9c] by Robert Brown Robert Brown , pushed by Nikodemus Siivola Nikodemus Siivola

printing specialized arrays readably

When *READ-EVAL* is true, use #. based syntax to print them.

lp#803665.

2011-12-05 10:42:47 Tree
[026aef] by Nikodemus Siivola Nikodemus Siivola

use *SUPPRESS-PRINT-ERRORS* for backtraces and DESCRIBE

The suppression mechanism is a bit more informative than the old #<error
printing object> marker for BACKTRACE, and DESCRIBE didn't really have
anything before this.

Also bind *PRINT-CIRCLE* to T for BACKTRACE, and use the PRINT-UNREADABLY
restart for PRINT-NOT-READABLE errors.

2011-12-05 10:30:44 Tree
[171fde] by Attila Lendvai Attila Lendvai , pushed by Nikodemus Siivola Nikodemus Siivola

add SB-EXT:*SUPPRESS-PRINT-ERRORS* modelled after *BREAK-ON-SIGNALS*

When non-NIL, OUTPUT-OBJECT (our main entry to the printer) binds a handler
that handles conditions of the specified type by printing an error marker
instead of signaling an error.

WRITE also accepts :SUPPRESS-ERRORS, and WITH-STANDARD-IO-SYNTAX binds it to
NIL.

Calls SIGNAL before handling the condition so outer handlers get a chance to
use restarts, etc.

2011-12-05 10:21:29 Tree
[e5b685] by Nikodemus Siivola Nikodemus Siivola

muffle style-warnings for INFO :FUNCTION :TYPE

Even if the function object's type contains unknown types, this is not the
right place to complain about them.

lp#806243

2011-12-05 10:21:18 Tree
[a00ea1] by Nikodemus Siivola Nikodemus Siivola

define SB-EXT:PRINT-UNREADABLY as a function

So

(handler-bind ((print-not-readable #'print-unreadably))
...)

works.

2011-12-05 10:16:19 Tree
[ca308e] by Nikodemus Siivola Nikodemus Siivola

silent non-toplevel DEFSTRUCT

Use TRULY-THE in the constructor inline expansion only if the compiler knows
the layout: using it for the lazy version doesn't help, and only causes a
STYLE-WARNING.

2011-12-05 10:16:05 Tree
[295fdb] by Nikodemus Siivola Nikodemus Siivola

don't simplify (LET () ..) => (LOCALLY ...) in the simple evalutor

If LET is at toplevel its subforms are not.

If LOCALLY is at toplevel its subforms are also at toplevel.

2011-12-05 10:15:52 Tree
[b7d703] by Nikodemus Siivola Nikodemus Siivola

less rebindings in defmethods

PCL needs to rebind DEFMETHOD arguments when they are assigned to:

* CALL-NEXT-METHOD needs the originals.

* We apply an implicit declaration to the original from the specializer,
which an assignment can violate.

There is, however, no need to bind everything simply because /something/ is
assigned to.

Fixed lp#898331.

2011-12-05 10:01:08 Tree
[b704b2] by Nikodemus Siivola Nikodemus Siivola

more conservative subtypep test for classoids

* Give NIL, NIL for invalid classoids with forward-referenced superclasses
instead of signaling an error during SUBTYPEP.

* If we can't tell it's a subtype and either has a forward-referenced
superclass we can't tell for sure it isn't -- meaning NIL, NIL instead of
NIL, T.

Fixes the second half of lp#888630.

2011-12-05 09:59:31 Tree
[1e9b2e] by Nikodemus Siivola Nikodemus Siivola

MAKE-ALIEN improvements

* Move more of the bytes-calculation to macroexpansion time.

* Change %MAKE-ALIEN to take bytes instead of bits, so that --in theory at
least-- chunks upto ARRAY-DIMENSION-LIMIT-1 bytes can be allocated.

* Use ALIEN-FUNCALL-SAVES-FP-AND-PC 0.

* Detect malloc() failure and signal a storage-condition for it. Fixes
lp#891268.

2011-12-05 09:58:25 Tree
[e768e8] by Nikodemus Siivola Nikodemus Siivola

stricter handling of declarations in DEFGENERIC

Warn about unrecognized declarations.

lp#894202

2011-12-05 09:56:18 Tree
[f37fd9] by Nikodemus Siivola Nikodemus Siivola

fix style-warnings for condition slot-accessors used in :REPORT

Previously condition slot accessors used in :REPORT option signaled
a style-warning under EVAL and LOAD (as source): the compiler saw
the lambda before the accessor had been proclaimed as functions.

Fixes lp#896379.

2011-12-05 09:55:19 Tree
[741d91] by Nikodemus Siivola Nikodemus Siivola

use boxed constants for full calls

If a constant is being used in a full call, use a boxed representation
instead of an inline one which must then be boxed at runtime. Also arrange
to have both an immediate unboxed and a boxed representation when
advantageous.

(There might be other cases besides full calls where we should prefer boxed
representations, but that's for later.)

2011-12-05 09:51:23 Tree
[cc2c68] by Nikodemus Siivola Nikodemus Siivola

no need for BOOT-MAKE-WRAPPER on target

Rename it !BOOT-MAKE-WRAPPER.

2011-12-05 09:45:39 Tree
[534ad9] by Nikodemus Siivola Nikodemus Siivola

change an AVER to CERROR 'bug

Hopefully making it easier to debug.

2011-12-05 09:45:38 Tree
Older >