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.
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!
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.
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
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.
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
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
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.
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)
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)
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)
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
Nikodemus Siivola [Mon, 26 May 2008 18:27:17 +0000 (18:27 +0000)]
1.0.16.46: small fixes to tests
* Remove the WITH-TIMEOUT from around the final test: it just made it
brittle, if something caused the threads to take slightly longer.
Add a comment about a semi-randomly broken :SCHEDULE-STRESS test in
timers.impure.lisp.
* Typo in ctor.impure.lisp: UPDATE-INSTANCE-FOR-REDEFINED-CLASS,
not UPDATE-INSTANCE-FOR-REDIFINED-CLASS. (Thank to Paul Khuong)
Nikodemus Siivola [Mon, 26 May 2008 07:38:28 +0000 (07:38 +0000)]
restore non-consingness of WITH-SPINLOCK
* Move the STACK-ALLOCATE-VALUE-CELLS declarations to DX-LET, and to
the right scope. (Free declaration.)
Christophe Rhodes [Fri, 23 May 2008 23:26:22 +0000 (23:26 +0000)]
1.0.16.44: fix stackp handling in define-cloned-fop
(Non-exposed bug spotted by Larry Valkama sbcl-devel 2008-04-30)
Christophe Rhodes [Thu, 22 May 2008 08:11:06 +0000 (08:11 +0000)]
1.0.16.43: test fixes
From Vitaly Mayatskikh (sbcl-devel 2008-05-21)
Christophe Rhodes [Wed, 21 May 2008 12:25:44 +0000 (12:25 +0000)]
1.0.16.42: Fix LOCALLY in fopcompiled context
Patch by Juho Snellman; gentle prodding by Attila Lendvai.
Richard M Kreuter [Tue, 20 May 2008 20:35:43 +0000 (20:35 +0000)]
1.0.16.41: target-load.lisp: simplify defaulting for pathnames with type NIL.
* Simplify the logic that looks for files with suitable extensions
when the argument pathname has NIL for a type. The existing code
leads to misreporting of unhandled FILE-ERRORs during LOAD.
* Scrape out unnecessary erroring introduced around the same time as
the flawed defaulting logic.
Nikodemus Siivola [Mon, 19 May 2008 16:46:36 +0000 (16:46 +0000)]
1.0.16.40: implement %SET-SYMBOL-VALUE-IN-THREAD
* Eventually we may want to export this, but let's keep it internal
for now...
* Rename SB-THREAD::SYMBOL-VALUE-IN-THREAD to
%SYMBOL-VALUE-IN-THREAD, and make it work with thread objects
instead of SAPs. Also, never return the global value, but instead
signal an error if the symbol is unbound in the thread.
* Similarly, rename THREAD-SAP-FOR-ID to %THREAD-SAP, and make it
work with thread objects instead of os-thread pointer values (née
thread ids).
* Rename CURRENT-THREAD-SAP-ID to CURRENT-THREAD-OS-THREAD.
Nikodemus Siivola [Mon, 19 May 2008 14:06:28 +0000 (14:06 +0000)]
1.0.16.39: small lisp-side interrupt handling improvements
* In INVOKE-INTERRUPTION, disable interrupts before doing the interrupt
handler bindings -- no point in making the window for recursive interrupts
any bigger then it already is.
* Similarly, ALLOW-WITH-INTERRUPTS only after the *STACK-TOP-HINT*
has been computed. (Actually, the stack top hint computation should
not be done for all interrupts, instead it would be better to add
an argument to indicate we want to start from the interrupted frame
to MAP-BACKTRACE.)
* Declare the &REST argument of (FLET RUN-HANDLER) dynamic extent.
Nikodemus Siivola [Mon, 19 May 2008 13:47:17 +0000 (13:47 +0000)]
1.0.16.38: document :CYCLE-COUNTER feature in base-target-features.lisp-expr
* Weaseling out from renaming it to :SB-CYCLE-COUNTER, and deferring that
a bit: seems better to take care of all similar features that are really
just built-time conveniences automatically inferred at the same time.
Nikodemus Siivola [Sat, 17 May 2008 20:05:09 +0000 (20:05 +0000)]
1.0.16.37: fix bug #206 -- SB-FLUID build works once more
* Thanks to Sidney Markowitz for tracking down the bad INLINE
declamations.
Nikodemus Siivola [Sat, 17 May 2008 19:52:21 +0000 (19:52 +0000)]
1.0.16.36: fix Windows build, hopefully
* Make OS-ATTR part of the thread object only on threaded platforms.
Nikodemus Siivola [Sat, 17 May 2008 11:02:27 +0000 (11:02 +0000)]
1.0.16.35: improved TIME output
* Print measured times using fixed-width decimal output with the
measured precision, instead of converting to floats for printing.
* Report processor cycle counts on x86 and x86-64.
** Since Intel doesn't seem to consider it necessary to issue a
CPUID both before and after RDTSC, maybe we don't need to do
that either.
** New feature, :CYCLE-COUNTER, for platforms that implement
SB-VM::%READ-CYCLE-COUNTER.
* Instead of reporting %EVAL calls, report "interpreted forms", which means
both %EVAL and SIMPLE-EVAL-IN-LEXENV.
* Report "lambdas converted" for the compiler, not counting TL-XEPs.
* Report CPU percentage (computed from real and run time.)
* Report total run time separately. Condence run time output slightly
by reporting total, user, and system on the same line.
* Report non-GC time as well.
* Condence output by omitting page faults, converted lambdas, and
interpreted forms when they are zero.
pkhuong [Fri, 16 May 2008 18:55:00 +0000 (18:55 +0000)]
1.0.16.34: Remove global STACK-ALLOCATE-VALUE-CELLS proclamation in make-host-2.lisp
* 1.0.16.29 introduced a new optimization quality to control the stack-allocation
of value cells. All the places in the code base where it was needed now declare
it explicitly.
Nikodemus Siivola [Fri, 16 May 2008 06:55:05 +0000 (06:55 +0000)]
1.0.16.33: UNION and NUNION work with :TEST-NOT again
* Patch by Eric Marsden. Broken at 1.0.9.1 by yours truly.
Nikodemus Siivola [Thu, 15 May 2008 16:10:02 +0000 (16:10 +0000)]
1.0.16.32: revert ANY-REG from registers for primitive type T on x86oids
* While register sets for DESCRIPTOR-REG and ANY-REG are identical on
x86 and x86-64, the compiler reasons about them a bit differently
-- so the earlier change is wrong, and caused a regression.
* Test-case to catch the regression, reduced from Elephant sources.
* Record the bug the earlier change tried to address as #427.
Nikodemus Siivola [Thu, 15 May 2008 15:37:48 +0000 (15:37 +0000)]
1.0.16.31: --control-stack-size runtime argument
* THREAD_CONTROL_STACK_SIZE becomes DEFAULT_CONTROL_STACK_SIZE.
* Align thread spaces using the larger of BACKEND_PAGE_SIZE and
CONTROL_STACK_ADJUSTMENT_BYTES.
* Take care of aligning both ends of the control stack when setting
up the thread struct -- that way pthread_attr_setstack doesn't have
to worry about alignment.
* Simplify stack setup in on x86oid platforms in
call_into_lisp_first_time: instead of having the nasty window where
ESP/RSP is right at the end of the stack, use pull out the control
stack end right out of the thread struct.
* Minimal documentation.
Not strictly related to --control-stack-size:
* Refactor thread post mortem cleanups to share as much code as
possible and reduce conditionalization. The core functions in the
new world are plan_thread_post_mortem, schedule_thread_post_mortem,
and perform_thread_post_mortem.
* Malloc thread attributes, and destroy them before freeing thread
stacks. (pthread_attr_setstack seems to say that we are not allowed
to free stacks that have attributes referring to them -- hopefully
pthread_attr_destroy gives us the licence we need, and since it is
not entirely clear we are allowed to destroy the attr before the
thread has finished, do it only after pthread_join.)
Nikodemus Siivola [Thu, 15 May 2008 13:45:26 +0000 (13:45 +0000)]
1.0.16.30: couple of small Darwin cleanups
* Add -lpthread os OS_LIBS on x86 builds as well, since malloc()
may not be thread-safe without it (but with it it apparently should
be...)
* Pass -arch x86_64 to the C compiler in foreign.test.sh when doing
64 bit builds on Darwin, since x86 is the default there.
Nikodemus Siivola [Mon, 12 May 2008 14:12:42 +0000 (14:12 +0000)]
1.0.16.29: workaround for bug 419
* Require an explicit SB-C::STACK-ALLOCATE-VALUE-CELLS optimize
declaration before stack allocating value cells to prevent
returning garbage values from hairy user code.
Christophe Rhodes [Sun, 11 May 2008 07:42:04 +0000 (07:42 +0000)]
1.0.16.28: Update asdf contrib to latest upstream CVS (1.117)
Disables the LOAD-PREFERENCES mechanism, which could interfere
with SBCL builds.
Nikodemus Siivola [Thu, 8 May 2008 15:05:22 +0000 (15:05 +0000)]
1.0.16.27: function-ify ERROR-CALL and GENERATE-ERROR-CODE on x86-64
* Port of 1.0.16.10 to x86-64.
Nikodemus Siivola [Thu, 8 May 2008 11:52:04 +0000 (11:52 +0000)]
1.0.16.26: dx allocation thru CAST nodes
* Allow DX allocation of LVARs thru cast nodes without type checks.
* Since it is not obvious to me that all uses of CAST-VALUE must be
in the same component as the cast itself, AVER that.
* Results of MAKE-ARRAY can once more be stack allocated. Regression
caused by different handling of TRULY-THE introducing cast nodes
where there previously were none.
* Tests.
Nikodemus Siivola [Thu, 8 May 2008 10:08:46 +0000 (10:08 +0000)]
1.0.16.25: restore buildability on threaded x86-64
* GENERATE-ERROR-CODE is still a macro on x86-64, so no quoting
TLS-EXHAUSTED-ERROR.
Nikodemus Siivola [Thu, 8 May 2008 08:53:31 +0000 (08:53 +0000)]
1.0.16.24: slightly more verbose errors for SB-FOO symbols in genesis
* ...faster to fix when the error tells you what the problematic
symbol was.
Nikodemus Siivola [Thu, 8 May 2008 08:38:09 +0000 (08:38 +0000)]
1.0.16.23: type-inconsistencies in HASH-TABLE accessors
* DEFKNOWN types did not match the slot types. Change the defknowns
to match the DEFSTRUCT.
Nikodemus Siivola [Thu, 8 May 2008 08:21:41 +0000 (08:21 +0000)]
1.0.16.22: FIXED-ALLOC to use MAYBE-PSEUDO-ATOMIC on x86 and x86-64.
* PA is not needed with stack allocation.
* Also rename the first argument to MAYBE-PSEUDO-ATOMIC to
NOT-REALLY-P to avoid confusion.
Gabor Melis [Thu, 8 May 2008 07:14:01 +0000 (07:14 +0000)]
1.0.16.21: lose informatively when the tls is full
Instead of eventually producing a segv or some random corruption:
(progv (loop for i below 5000
collect (make-symbol (format nil "xxx~D" i)))
(loop for i below 5000 collect i))
Gabor Melis [Tue, 6 May 2008 16:54:35 +0000 (16:54 +0000)]
1.0.16.20: update GIT-FOR-SBCL-HACKERS
Make it a bit less misleading about the actual treatment of
version.lisp-expr.
Christophe Rhodes [Tue, 6 May 2008 16:43:52 +0000 (16:43 +0000)]
1.0.16.19: cleanups motivated by clisp host-2
Christophe Rhodes [Tue, 6 May 2008 10:45:42 +0000 (10:45 +0000)]
1.0.16.18: Fixes to get clisp through host-1
Just a couple of ignores and code rearrangements.
Nikodemus Siivola [Mon, 5 May 2008 13:26:06 +0000 (13:26 +0000)]
1.0.16.17: log bug #426: inlining failure involing multiple nested calls
* Not a regression, but apparently of CMUCL vintage.
Christophe Rhodes [Sun, 4 May 2008 20:14:35 +0000 (20:14 +0000)]
1.0.16.16: Use declared element type in AREF short-circuit transform
The short-circuit transformation introduced in 1.0.2.17
removed the system's understanding of the declared array element
type (as opposed to the upgraded array element type).
Reintroduce the cleverness, and hope that the use of type=
doesn't remove all the slowdown.
(Issue noted by vy on #lisp afternoon 2008-05-04 BST)
Nikodemus Siivola [Sun, 4 May 2008 15:06:37 +0000 (15:06 +0000)]
1.0.16.15: fix TRANSFORM-LIST-ITEM-SEEK for ADJOIN with constant list arg
* Urk, missed a spot. There is probably little sense to open code ADJOIN
like ASSOC and MEMBER, so let's not.
* Tests.
Thiemo Seufer [Tue, 29 Apr 2008 23:43:03 +0000 (23:43 +0000)]
1.0.16.14:
Fix compiler warning.
Nikodemus Siivola [Tue, 29 Apr 2008 13:58:51 +0000 (13:58 +0000)]
1.0.16.13: use TRANSFORM-LIST-ITEM-SEEK for ADJOIN as well
* Now that the freeze was cancelled, do this properly...
Nikodemus Siivola [Mon, 28 Apr 2008 21:48:39 +0000 (21:48 +0000)]
1.0.16.12: revert ADJOIN change from 1.0.16.5
* The correct expansion is a bit too hairy to implement nicely
with a compiler macro.
* Test-cases.
Second take using TRANSFORM-LIST-ITEM-SEEK coming after the freeze.
Nikodemus Siivola [Thu, 24 Apr 2008 08:36:11 +0000 (08:36 +0000)]
1.0.16.11: ANY-REG is good for pritimitive-type T on x86/x86-64
* Report and test case by Stelian Ionescu.
Nathan Froyd [Thu, 24 Apr 2008 04:08:48 +0000 (04:08 +0000)]
1.0.16.10: function-ify ERROR-CALL and GENERATE-ERROR-CODE on x86
* Saves ~120k in core size.
* Should be done for other backends and ERROR-CALL &co.
refactored appropriately.
Christophe Rhodes [Wed, 23 Apr 2008 21:43:58 +0000 (21:43 +0000)]
1.0.16.9: restore buildability from CMUCL
CMUCL justifiably emits warning on (ecase ... (...) (t ...)).
Use ((t) ...) instead as the last clause. Reported by Andreas
Franke (sbcl-devel 2008-04-23).
Nikodemus Siivola [Wed, 23 Apr 2008 18:21:13 +0000 (18:21 +0000)]
1.0.16.8: NCONC with dx &rest lists
* Remove MAYBE-INLINE declaration: with dx &rest list inlining NCONC doesn't
yield any real benefits.
* Also delete some dead code, and NCONC2 -- interestingly unlike with
APPEND, a compiler-macro to NCONC2 seems to hurt more then it helps
(not that it hurts in any real way).
Nikodemus Siivola [Wed, 23 Apr 2008 17:40:38 +0000 (17:40 +0000)]
1.0.16.7: slightly faster LAST
* Remove MAYBE-INLINE declaration and separate into out-of-line
%LAST0, %LAST1, %LASTN/FIXNUM, and (rather academically)
%LASTN/BIGNUM.
* Add a DEFTRANSFORM to optimize to the most specific version
possible.
Nikodemus Siivola [Wed, 23 Apr 2008 15:42:30 +0000 (15:42 +0000)]
1.0.16.6: slightly faster APPEND
* Declare &REST dynamic-extent and remove MAYBE-INLINE declaration.
* Micro-optimization for type-checking and list walking.
* Compiler-macro into APPEND2 for the common 2 argument case.
Nikodemus Siivola [Wed, 23 Apr 2008 15:29:28 +0000 (15:29 +0000)]
1.0.16.5: faster ADJOIN in normal speed policies
* Remore MAYBE-INLINE declaration, and add a compiler macro so that
MEMBER transform is able to its job.
Nikodemus Siivola [Tue, 22 Apr 2008 09:56:37 +0000 (09:56 +0000)]
1.0.16.4: correct nested DX reasoning
* Propagate dynamic-extentness to an argument of a function whose
result is going to be dx-allocated only if all uses of the argument
lvars are good-for-dx combinations -- otherwise we may accidentally
cause DX allocation of things accessible via other variables.
Christophe Rhodes [Thu, 17 Apr 2008 14:46:17 +0000 (14:46 +0000)]
1.0.16.3: fnstsw %eax is invalid assembler syntax.
Report and patch from Marijn Schouten (sbcl-devel 2008-04-10)
Christophe Rhodes [Thu, 17 Apr 2008 14:05:01 +0000 (14:05 +0000)]
1.0.16.2: Fix FASL header checking logic
We mustn't read a word argument before we're sure that the
wordsize is right; otherwise we risk trying to create a string
of length approximately 2^32.
... reported by stassats@gmail.com on sbcl-devel 2008-04-16
Alexey Dejneka [Sun, 13 Apr 2008 03:48:18 +0000 (03:48 +0000)]
1.0.16.1: fix heap-allocated alien variable reference
William Harold Newman [Sun, 13 Apr 2008 01:39:01 +0000 (01:39 +0000)]
1.0.16: release, will be tagged as sbcl_1_0_16
Nikodemus Siivola [Thu, 27 Mar 2008 17:40:30 +0000 (17:40 +0000)]
1.0.15.41: sod this, revert to the old & simple tar-using contrib installation
* Windows has occasionally *.FASL files, so *.fasl is not robust. Copy
all the files using tar, but keep the find + chown so that contribs
are owned by the installer, not the builder.
Nikodemus Siivola [Wed, 26 Mar 2008 19:32:35 +0000 (19:32 +0000)]
1.0.15.40: more portable contrib module installation
* Going in despite the freeze: earlier version depended on GNU tar,
and broke install.sh on installations where tar was not GNU.
* Patch by Eugene Ossintsev.
Richard M Kreuter [Wed, 26 Mar 2008 15:54:11 +0000 (15:54 +0000)]
1.0.15.39: Remove subclasses of sb-posix:syscall-error
These were added in 1.0.14 (but never documented), and turn out to be
impediments to some future progress on Windows.
Richard M Kreuter [Tue, 25 Mar 2008 21:27:33 +0000 (21:27 +0000)]
1.0.15.38: One more fix for Win32 (oops)
* contrib/sb-posix/posix-tests.lisp: feature-out the fcntl tests on Win32.
Richard M Kreuter [Tue, 25 Mar 2008 21:24:24 +0000 (21:24 +0000)]
1.0.15.37: Windows fixes.
* tools-for-build/grovel-headers.c: add a grovel for EINTR
* contrib/sb-posix/constants.lisp: feature-out the ALIEN-FLOCK structure.
Nikodemus Siivola [Mon, 17 Mar 2008 17:13:40 +0000 (17:13 +0000)]
1.0.15.36: fix bug 423
* TRULY-THE no longer eagerly annotates the LVAR, but rather acts
like THE in unsafe code. (Inserts a cast for which no type-check is
generated.)
* ALLOC-NUMBER-STACK-SPACE and ALLOC-ALIEN-STACK-SPACE were missing
:RESULT-TYPES, which was masked by the old TRULY-THE
implementation. (Tested on x86, x86-64, PPC, but all backends
updated -- hopefully correctly.)
* Docstrings for THE and TRULY-THE.
FWIW, this patch seems to make PPC+GENCGC build happy once again: but
I don't know if that means the problems there were/are related to bug
423 -- or if the exact memory layout just happens to change subtly so
that whatever corruption occurs, just happens to occur in a place
where the GC doesn't see it anymore. (Or if the exact point at which
GC runs is now just slightly different so that the problem pointers
are not live anymore, or...)