* 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)
* Move the STACK-ALLOCATE-VALUE-CELLS declarations to DX-LET, and to the right scope. (Free declaration.)
(Non-exposed bug spotted by Larry Valkama sbcl-devel 2008-04-30)
From Vitaly Mayatskikh (sbcl-devel 2008-05-21)
Patch by Juho Snellman; gentle prodding by Attila Lendvai.
…ype 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.
* 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.
* 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.
…sp-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.
* Thanks to Sidney Markowitz for tracking down the bad INLINE declamations.
* Make OS-ATTR part of the thread object only on threaded platforms.
* 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.
…ake-host-2.lisp * 184.108.40.206 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.
* Patch by Eric Marsden. Broken at 220.127.116.11 by yours truly.
* 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.
* 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.)
* 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.
* 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.
Disables the LOAD-PREFERENCES mechanism, which could interfere with SBCL builds.
* Port of 18.104.22.168 to x86-64.
* 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.
* GENERATE-ERROR-CODE is still a macro on x86-64, so no quoting TLS-EXHAUSTED-ERROR.
* ...faster to fix when the error tells you what the problematic symbol was.
* DEFKNOWN types did not match the slot types. Change the defknowns to match the DEFSTRUCT.
* PA is not needed with stack allocation. * Also rename the first argument to MAYBE-PSEUDO-ATOMIC to NOT-REALLY-P to avoid confusion.
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))
Make it a bit less misleading about the actual treatment of version.lisp-expr.
Just a couple of ignores and code rearrangements.
* Not a regression, but apparently of CMUCL vintage.
The short-circuit transformation introduced in 22.214.171.124 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)
… arg * Urk, missed a spot. There is probably little sense to open code ADJOIN like ASSOC and MEMBER, so let's not. * Tests.
Fix compiler warning.
* Now that the freeze was cancelled, do this properly...