Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.

Close

sbcl Log


Commit Date  
[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
[92e62a] (132.9 kB) by Nikodemus Siivola Nikodemus Siivola

export *USERINIT-PATHNAME-FUNCTION* and *SYSINIT-PATHNAME-FUNCTION*

I have no idea why I didn't do that in the first place.

2011-06-10 17:19:37 View
Download
[4084b6] (132.7 kB) by Nikodemus Siivola Nikodemus Siivola

armload of DEFINE-HASH-CACHE changes

* To clear a cache, drop the entire vector instead of filling it with
NILs: thread safe, less work, and doesn't add dirty pages to old
generations.

Entering a value after the cache has been dropped allocates a new
one.

Caches are now initialized with 0 instead of NIL -- faster to
allocate.

* Use DEFGLOBAL instead of DEFVAR.

* SAVE-LISP-AND-DIE drops all caches.

* UNSAFE-CLEAR-ROOTS drops caches depending on the depth of the
collection: nursery collection keeps all caches, gen 1 collection
drops the CTYPE-OF cache, gen 2 and deeper collections drop all
caches.

2011-06-07 20:18:57 View
Download
[f71d9c] (132.7 kB) by Nikodemus Siivola Nikodemus Siivola

1.0.48.35: SB-EXT:GC-LOGFILE

GENCGC only.

(SETF SB-EXT:GC-LOGFILE) to a pathname starts logging before/after
generation statistics there. Doing the same with NIL stops logging.

2011-05-30 12:00:19 View
Download
[1100ef] (132.7 kB) by Nikodemus Siivola Nikodemus Siivola

1.0.48.34: MAKE-ALIEN-STRING

An easy way to copy lisp strings to malloc'ed memory.

I can't believe we didn't have this before. ...just seems
insane. I keep expecting to find a nice way to do this
squirreled away somewhere in SB-ALIEN. Here's hoping I won't
embarrass myself by finding one.

Also fix the OAOOM in MAKE-ALIEN and FREE-ALIEN documentation: make
the docstrings the canonical versions, and include them in the
manual.

2011-05-30 11:59:18 View
Download
[71bc8b] (132.6 kB) by Nikodemus Siivola Nikodemus Siivola

1.0.48.31: WITH-LOCKED-SYSTEM-TABLE

Instead of disabling interrupts in user code that needs
WITH-LOCKED-HASH-TABLE, have a separate WITH-LOCKED-SYSTEM-TABLE
that does so.

Use it instead of WITH-LOCKED-HASH-TABLE for all internals.

2011-05-29 21:49:45 View
Download
[a7a4ca] (132.5 kB) by Nikodemus Siivola Nikodemus Siivola

1.0.48.28: make TRULY-THE macroexpandable

lp#771673

* MACRO-FUNCTION no longer checks :FUNCTION :KIND, allowing us to have
special operators with macro-expansions in the first place.

* Add %MACROEXPAND and %MACROEXPAND which are careful not to expand special
forms, and use them in place of SB!XC:MACROEXPAND.

* Set the :FUNCTION :MACRO-FUNCTION into an expander that just converts
it to THE. This only happens when someone explicitly calls MACROEXPAND
or uses MACRO-FUNCTION directly -- never in the compiler.

* Also add a SETF-expander.

2011-05-28 12:27:36 View
Download
[23e319] (132.4 kB) by Nikodemus Siivola Nikodemus Siivola

1.0.48.10: add deadlock detection to spinlocks and mutexes

Each thread gets a WAITING-FOR slot which holds the lock it is
currently trying to acquire.

After initial try at lock acquisition fails, we check for deadlocks:
we look at the thread that owns the lock we want -> lock it is
waiting for, etc, recursively, until we either bottom out or find
someone waiting for us.

Print thread as having state WAITING if it is waiting for a lock.

Add a PRINT-OBJECT methods for MUTEXes and SPINLOCKs.

SB-THREAD:THREAD-DEADLOCK-CYCLE contains a list of the
threads and locks involved, so that the situation can be
analyzed even afer a handler has broken the deadlock.

2011-05-11 16:48:37 View
Download
[a1a34a] (132.3 kB) by Nikodemus Siivola Nikodemus Siivola

1.0.48.9: better source information for compile-time type errors

Compile-time warning: in addition to the context, also tell exactly
which form produces the value that is not of the expected type.

Run-time error: include both the error context and exact form in the
error message.

Delete VALUES-TYPE-ERROR, and use SIMPLE-TYPE-ERROR for both legs in
%COMPILE-TIME-TYPE-ERROR.

2011-05-11 11:15:43 View
Download
[b67c2d] (132.3 kB) by Nikodemus Siivola Nikodemus Siivola

1.0.48.7: add FD-STREAM-FD-TYPE, use it to decide when to poll the fd

1.0.42.43 introduced a regression that caused reads from non-regular files
to potentially block in an uninterruptible state, as WAIT-UNTIL-FD-USABLE
started being called only when there was a timeout or events to serve.

This was a win for regular files, because filling the input buffer then
required one syscall less.

...but since uninterruptible blocking reads aren't fun for anyone, let's
make things a bit smarter:

* When creating an FD-STREAM, use fstat() to get the type of the fd, and
store a keyword describing it in the FD-STREAM.

* REFILL-INPUT-BUFFER now calls SYSREAD-MAY-BLOCK-P always if the file
anything but :REGULAR -- so pipes and sockets and whatnot get their
select() calls, and a read from a stream to one can no longer cause
SBCL to hang.

2011-05-10 20:05:25 View
Download
[d51e3d] (132.3 kB) by Nikodemus Siivola Nikodemus Siivola

1.0.48.4: source locations for init files

Refactor PROCESS-INIT-FILE to share code with LOAD-AS-SOURCE.

Also add in contrib/sb-introspect/load-test.lisp which was
left out from the last commit.

2011-05-09 22:12:27 View
Download
[a80a02] (132.2 kB) by Nikodemus Siivola Nikodemus Siivola

1.0.48.3: source-locations from LOAD of source files, and EVAL-WHEN :COMPILE-TOPLEVEL

* Bind *SOURCE-INFO* and bind and populate *SOURCE-PATHS* in
LOAD-AS-SOURCE.

* EVAL-TLF provides a way to evaluate things while providing the
toplevel form number. It also captures the current *SOURCE-INFO*
and passes it onwards to be reused by ACTUALLY-COMPILE.

* In ACTUALLY-COMPILE, when asked to reuse a source-info object,
also retain the old *SOURCE-PATHS*.

2011-05-09 19:47:03 View
Download
[709547] (132.1 kB) by Christophe Rhodes Christophe Rhodes

1.0.47.8: No more INSTANCE-LAMBDA

So long! Farewell! It's time to say goodbye!

2011-04-02 14:19:36 View
Download
[f2c2f0] (132.1 kB) by cracauer cracauer

1.0.46.32: export sb-kernel::redefinition-with-defmacro

Export sb-kernel::redefinition-with-defmacro the same way we already
export sb-kernel:redefinition-with-defun and it's CLOS friends.

2011-03-08 23:21:14 View
Download
[838316] (132.1 kB) by Nikodemus Siivola Nikodemus Siivola

1.0.45.32: export SB-PCL:+SLOT-UNBOUND+

Using STANDARD-INSTANCE-ACCESS with this provided is much nicer --
no need to muck around with SLOT-BOUNDP-USING-CLASS and such.

Also add quick SIA tests and some dependant update abuse
to tests.

lp#718039

2011-02-13 20:34:14 View
Download
[dbe82b] (132.0 kB) by Nikodemus Siivola Nikodemus Siivola

allow approximating unions of numeric types

* Binding *APPROXIMATE-NUMERIC-UNIONS* does that. It must be bound
only by callers of TYPE-UNION that know what they want -- in general

(OR (INTEGER 1 2) (INTEGER 3 4)) => (INTEGER 1 4)

is wrong, as (NOT (INTEGER 1 4)) doesn't include 3. But in special cases
like deriving the return type of a function it can be done.

* Rename MAKE-CANONICAL-UNION-TYPE MAKE-DERIVED-UNION-TYPE, and bind *A-N-U*
there if we start accumulating an overly large union of numeric types.
Definition of "overly large" can be adjusted via
*DERIVED-NUMERIC-UNION-COMPLEXITY-LIMIT*.

* Fixes lp#309448 and the recent compiler performance regression due
to new CONCATENATE deftransform as reported on sbcl-devel.

2010-11-18 11:28:46 View
Download
[4fa1c7] (132.0 kB) by Nikodemus Siivola Nikodemus Siivola

1.0.44.26: more nuanced deprecation framework

DEFINE-DEPRECATED-FUNCTION is the new one-stop shop for the "common"
case of deprecating a function in favor of another one.

...in cases where it is not sufficient, call DEPRECATION-WARNING or
DEPRECATION-ERROR directly from the compiler or other place.

Three stages: :EARLY signals a compile-time style-warning, :LATE
signals a compile-time full warning, :FINAL a compile-time full
warning and a run-time error.

(This is based on the assumption that this is both a sufficient and
desirably nuanced taxonomy -- if more or less is wanted, changing
this later is easy enough.)

SB-EXT:DEPRECATION-CONDITION is the base class of all deprecation
warnings and errors, but it isn't yet documented: once we have a
concensus of sorts on a deprecation protocol/schedule, I will write
the appropriate bits in the manual.

Everything that previously had a deprecation warning is now in :LATE
stage, except for INSTANCE-LAMBDA which is now in :FINAL stage.

2010-11-16 18:18:03 View
Download
[9df2ab] (131.7 kB) by Nikodemus Siivola Nikodemus Siivola

1.0.44.21: expand ~ in pathnames

~/... => (:ABSOLUTE :HOME ...)

~user/... => (:ABSOLUTE (:HOME "user") ...)

Translation back to NAMESTRING reinstates the tilde, so we retain
read/write consistency.

NATIVE-NAMESTRING is responsible for getting the actual full path
to specified home directory.

This late resolution is necessary to have (open "~/foo") and
(open #p"~/foo") open the same file in compiled code -- regardless
of who compiled the file.

Tilde is treated specially only at the start of the first directory
component: it doesn't need to be escaped anywhere else. After trying
out the various options (escape everywhere, escape in directory
components, escape at the start of directory components, escape at
the start of all components) this seemed both least intrusive and
least ambiguous when documented -- not to mention most backwards
compatible.

Currently escaping the tilde does not work on Windows, but this is due to
current general inability to escape the first directory component on
Windows, since \\ is used also as a directory separator for non-native
pathnames as well. See lp#673625. Test-case added for this.

(:HOME "user") also doesn't work on Windows, which is documented
in the manual.

2010-11-10 17:49:30 View
Download
[c097df] (131.7 kB) by Alastair Bridgewater Alastair Bridgewater

1.0.44.15: ir2: Skip value-cell allocation where possible.

* Expose the new ANCESTOR-FRAME VOPs in package-data.lisp-expr.

* When creating TNs for closed-over LAMBDA-VARs with "implicit"
VALUE-CELLs, force the TNs to be allocated on the control-stack,
and to be live over the entire extent of the PHYSENV.

* When translating a REF or SET node for such LAMBDA-VARs from
a NODE in a CLAMBDA with a different PHYSENV, use the new VOPs to
access the LAMBDA-VAR.

* When setting up a closure for such LAMBDA-VARs from a NODE in
a CLAMBDA with the same PHYSENV as the variable, use the new
CLOSURE-INIT-FROM-FP VOP to stash the frame pointer instead of a
VALUE-CELL or the current value of the variable.

* When setting up the closure environment for a local-call that
closes over such a LAMBDA-VAR, and the call is being made from a
NODE in a CLAMBDA with the same PHYSENV as the variable, store the
current frame-pointer instead of a VALUE-CELL or the current value
of the variable.

2010-11-09 19:45:23 View
Download
[ec0e9d] (131.6 kB) by Nikodemus Siivola Nikodemus Siivola

1.0.43.62: implement SB-EXT:DELETE-DIRECTORY

Extend MAP-DIRECTORY with :CLASSIFY-SYMLINKS so implementing "delete
symlinks but don't follow them" behaviour for :RECURSIVE T is nice
and easy.

2010-10-15 10:16:48 View
Download
Older >