sbcl Log


Commit Date  
[146343] (134.1 kB) by Nikodemus Siivola Nikodemus Siivola

refactor PRINT-NOT-READABLE condition signaling

SB-INT:PRINT-NOT-READABLE-ERROR both signals the condition,
and binds the restarts.

2011-11-27 12:28:54 View
Download
[179812] (134.1 kB) by Alastair Bridgewater Alastair Bridgewater

Add SB-SYS:SAP-REF-LISPOBJ.

* This is for those cases where you know that you are trying to
read valid boxed data, the address of the data you want to read
is in some sense "stable" (meaning, won't be moved by the GC),
and you don't want to deal with the requirements for calling
SB-KERNEL:MAKE-LISP-OBJ.

* Implemented across the board, but only tested on PPC. What
could possibly go wrong?

2011-11-22 18:40:21 View
Download
[1a61f0] (134.0 kB) by Zach Beane Zach Beane , pushed by Christophe Rhodes Christophe Rhodes

new SET-SBCL-SOURCE-LOCATION convenience function

From Zach Beane sbcl-devel 2011-11-15.

Signed-off-by: Christophe Rhodes <csr21@cantab.net>

2011-11-19 21:36:30 View
Download
[b43491] (134.0 kB) by Nikodemus Siivola Nikodemus Siivola

export DYNAMIC-SPACE-SIZE from SB-EXT

2011-11-19 15:04:37 View
Download
[9f1903] (133.9 kB) by Nikodemus Siivola Nikodemus Siivola

semaphore notification objects

2011-11-17 17:08:58 View
Download
[b71b8d] (133.7 kB) by Nikodemus Siivola Nikodemus Siivola

extensible CAS and CAS extensions

DEFINE-CAS-EXPANDER and DEFCAS are analogous to DEFINE-SETF-EXPANDER and
DEFSETF, including CAS-functions similar to SETF-functions:

(defun (cas foo) (old new ...) ...)

THis is exported from SB-EXT for users to play with, and used to implement
our CAS places internally.

Add support for CAS of:

* SLOT-VALUE

* STANDARD-INSTANCE-ACCESS

* FUNCALLABLE-STANDARD-INSTANCE-ACCESS

In case of SLOT-VALUE we don't yet support any optimizations or specify
results when SLOT-VALUE-USING-CLASS or friends are in play -- perhaps later
we can add

(CAS SLOT-VALUE-USING-CLASS) &co

in order to support it for arbitrary instances.

Adding support for permutation vector optimization should not be too hard
either, but let's let the dust settle first...

2011-11-12 13:41:48 View
Download
[d6f967] (133.5 kB) by Nikodemus Siivola Nikodemus Siivola

killing lutexes, adding timeouts

* Remove all lutex-specific code from the system.
** Use SB-FUTEX for futex-capable platforms, and plain SB-THREAD
otherwise.
** Make non-futex mutexes unfair spinlocks for now, using WAIT-FOR to
provide timeouts and backoff.
** Build non-futex condition variables on top of a queue and WAIT-FOR.

Performance implications: SB-FUTEX builds should perform pretty much the
same, or improve a bit. Threaded non-futex builds are affected as follows:

1. Threads idling on semaphores or condition variables aren't quite as
cheap. Just how costly depends on the OS. On Darwin 1000 idle threads
can chew up a bit over 50% CPU. I will try to address this later.

2. Contested locking around operations that take considerably longer
than a single timeslice suffers mild degradation.

3. Contested locking around operations that don't take long is an order
of magnitude performant.

4. Highly active semaphores perform much better. (Follows from #3.)

* GRAB-MUTEX gets timeout support on all platforms.

* CONDITION-WAIT gets timeout support.

* Disable a bunch of prone-to-hang thread tests on Darwin. (All of them
were already prone to hang prior to this commit.)

* Enable a bunch tests that now /pass/ on Darwin. \o/ This doesn't mean that
the threaded Darwin is fully expected to pass all tests yet, but let's say
it's more likely to do so.

...but still not robust enough to enable threads on Darwin by default.

* GET-MUTEX/GRAB-MUTEX get refactored into two main parts: %TRY-MUTEX and
%WAIT-ON-MUTEX, which are also used directly from CONDITION-WAIT where
appropriate.

2011-11-09 23:00:48 View
Download
[b85af7] (133.7 kB) by Nikodemus Siivola Nikodemus Siivola , pushed by Nikodemus Siivola Nikodemus Siivola

waiting for arbitrary events SB-EXT:WAIT-FOR

While using this to wait for other threads isn't good style,
sometimes it is _much_ easier to just state the thing you're
waiting for than build the synchronization to make it nice.

And sometimes the event lives in the external world, in which case
you really need to poll anyways:

(wait-for (probe-file pathname))

2011-10-28 15:56:49 View
Download
[a36968] (133.6 kB) by Alastair Bridgewater Alastair Bridgewater , pushed by Alastair Bridgewater Alastair Bridgewater

63-bit fixnums on 64-bit targets.

* This is mostly just a matter of spreading the PADn lowtags around,
one or two cases of adjusting a constant, and some KLUDGEing around in
the runtime to make everything work for 1 <= n-fixnum-tag-bits <= 3.

* Yes, this means that you can change n-fixnum-tag-bits before
building in order to return to a 61-bit fixnum world. Or you can have
62-bit fixnums if you want.

2011-10-20 14:44:01 View
Download
[dd04bd] (133.5 kB) by Alastair Bridgewater Alastair Bridgewater , pushed by Alastair Bridgewater Alastair Bridgewater

Fixnum and unsigned-fixnum array cleanups.

* Rename {arraytype}-{elementtype1} to {arraytype}-{elementtype2} for
{arraytype} in (SIMPLE-ARRAY VECTOR), {elementtype1} in
(UNSIGNED-BYTE-29 UNSIGNED-BYTE-60 SIGNED-BYTE-30 SIGNED-BYTE-61) and
{elementtype2} in (UNSIGNED-FIXNUM SIGNED-FIXNUM) across the board
(predicates, tag names, etc.).

* Cleanup of related conditional compilation.

* Export n-fixnum-bits (the remaining fixnum representation constant)
from sb!vm instead of having it as an internal symbol of sb!pcl.

* Original patch by Paul Khuong.

2011-10-19 19:49:32 View
Download
[797692] (134.2 kB) by Paul Khuong Paul Khuong

Optional support for zlib-based in-memory deflate/inflate for core files

* As this is based on zlib, only add the dependency when
:SB-CORE-COMPRESSION is enabled as a build-time feature. On x86-64,
compressed cores take about 1/4 the space, but start up in a few
tenths of a second.

Unlike gzexe'd executables, compressed images work without writing
to /tmp.

If :SB-CORE-COMPRESSION is enabled, trigger compression with the
:COMPRESSION argument to SAVE-LISP-AND-DIE.

* Also add a NEWS entry for the literal complex-single-float bugfix

2011-08-28 03:23:03 View
Download
[77ae1e] (134.1 kB) by Paul Khuong Paul Khuong

New function: SB-EXT:SPIN-LOOP-HINT

Some architectures have developed ways to help the processor execute
spin loops efficiently; expose them, where applicable, via
SB-EXT:SPIN-LOOP-HINT.

Assembles to PAUSE on x86oids, and to nothing on other platforms.

2011-08-14 22:31:52 View
Download
[3254e1] (134.0 kB) by Paul Khuong Paul Khuong

New function: SB!KERNEL:%MULTIPLY-HIGH

* Does the same thing as only returning the first value of %MULTIPLY,
only better on some platforms.

* Implemented vas VOPs on x86, x86-64 and PPC. The PPC code sequence
is fully untested, and merely looks correct.

* VOPs for fixnum first argument are included, but will only be used
when the result is forcibly marked as fixnum, e.g., with TRULY-THE.
Questionnable, but I'd rather err on the side of straightforwardness
rather than put even more pressure on representation selection.

* Use it in the division-by-multiplication transform for unsigned
TRUNCATE by constant.

2011-08-14 20:49:27 View
Download
[6caf3e] (134.0 kB) by David Lichteblau David Lichteblau

Fix QUERY-FILE-SYSTEM for Windows UNC and device file names

Thanks to Anton Kovalenko.

2011-08-11 19:27:00 View
Download
[ad4b18] (133.7 kB) by Anton Kovalenko Anton Kovalenko , pushed by David Lichteblau David Lichteblau

sb-win32: offer low-level bindings for file mapping functions

Includes functions offered by Windows that are similar in
spirit to mmap.

Currently these are low-level FFI versions only, and no attempt
is made to export them from sb-posix under the name mmap. In
sb-posix, only a wrapper for msync and definitions of several
constants is offered, as needed for sb-simple-streams.

Thanks to Anton Kovalenko.

Also take this opportunity to sort the sb-win32 package
definition as a flat list.

2011-08-10 18:04:33 View
Download
[0b79d8] (133.4 kB) by Nikodemus Siivola Nikodemus Siivola

implement CEILING and FLOOR in terms of %CEILING and %FLOOR

This allows transforms specific to CEILING and FLOOR fire first.

If they fail, the fallback transforms to %CEILING or %FLOOR,
respectively.

They in turn are inlined, allowing the transforms for TRUNCATE
to pick up the slack.

This allows the new division -> multiplication transforms to fire
for CEILING and FLOOR when SPACE > 1.

2011-08-05 13:11:06 View
Download
[38440d] (133.3 kB) by Nikodemus Siivola Nikodemus Siivola

rename %FLOOR to %BIGFLOOR

2011-08-05 13:10:53 View
Download
[fb15ad] (133.3 kB) by Nikodemus Siivola Nikodemus Siivola

export MOST-POSITIVE-WORD from SB-EXT

We need it internally anyways, and since we export the WORD type, we
might just as well export the constant too.

2011-08-05 09:13:23 View
Download
[e7b2c5] (133.3 kB) by Nikodemus Siivola Nikodemus Siivola

more robust backtraces for syscalls on x86

* new optimization policy: ALIEN-FUNCALL-SAVES-FP-AND-PC Set to 3 for
self-build on x86 to get reliable more backtraces there, and 0 for
other platforms. (1 matches the old SPEED <= DEBUG behaviour.)

* When using a saved FP, and an interrupt context has a bogus
FP, assume it is an interrupted syscall frame.

2011-08-01 15:30:15 View
Download
[5c0a88] (133.2 kB) by Paul Khuong Paul Khuong

Split GENCGC_PAGE_BYTES in 3 constants

* We still have BACKEND_PAGE_BYTES, which should be a conservative
over-approximation of the OS's page size.

* GENCGC_PAGE_BYTES is mostly replaced by GENCGC_CARD_BYTES, the
byte granularity at which we track writes to old generations.
While we're using mprotect-based write barriers, this should be
a multiple of BACKEND_PAGE_BYTES.

* GENCGC_ALLOC_GRANULARITY is the minimum size we attempt to make
each allocation region. Should be a multiple of GENCGC_CARD_BYTES.
While we have largeish cards, this shouldn't ever be an issue, but
it might if we ever go down to < 1k cards.

* GENCGC_RELEASE_GRANULARITY is the minimum size at which we release
address space to the OS. This should always be a multiple of
BACKEND_PAGE_BYTES.

* For now, all three new constants are equal to BACKEND_PAGE_BYTES.

2011-07-03 16:45:42 View
Download
[57d30b] (133.2 kB) by Paul Khuong Paul Khuong

Differentiate between object slot initialisation and mutation

INIT-SLOT and SET-SLOT VOPs do the same thing on every platform for
now.

2011-07-03 01:05:31 View
Download
[cc27e3] (133.1 kB) by Christophe Rhodes Christophe Rhodes

restarts for PRINT-NOT-READABLE errors

Two restarts: USE-VALUE, to provide a value to be printed instead
(under the same printer control variable bindings), and
SB-EXT:PRINT-UNDREADABLY, printing the same object but with
*PRINT-READABLY* bound to NIL. Only minimally tested, but should
meet requirements for lp#801255.

2011-06-29 14:53:37 View
Download
[d9479b] (133.1 kB) by Nikodemus Siivola Nikodemus Siivola

export SIZE-T and OFF-T from SB-ALIEN

They're pretty common interface types.

2011-06-26 18:01:48 View
Download
[56a2db] (133.0 kB) by Paul Khuong Paul Khuong

Compiler support for specialised implicit value cells

Enables the use of non-T stack TNs for closed-over dynamic-extent variables.

SB!VM:PRIMITIVE-TYPE-INDIRECT-CELL-TYPE takes a primitive-type and returns
NIL, or a list of 4 values:
- the primitive type of the implicit indirect value cell
- the SC of that cell
- a function that takes the NODE, BLOCK, FP, VALUE and RESULT, and
emits a reference to that cell.
- a function that takes the NODE, BLOCK, FP, NEW-VALUE and VALUE, and
emits a write to that cell.

Some correctness tests to make sure codegen is correct (without verifying
DXness).

2011-06-21 03:52:45 View
Download
[293488] (132.9 kB) by Paul Khuong Paul Khuong

Inline local call trampolines on x86[-64]

Allow the insertion of code before entry to blocks from
drop0throughs, jumps, and calls. Used on x86oids to insert
the code to move return addresses to the right location
on local calls without trampolines.

2011-06-21 02:07:52 View
Download
Older >