* SHRINK-VECTOR is now safe wrt to gcing: it returns a new vector if needed, only shrinks arrays with fill pointers destructively. * %SHRINK-VECTOR is what SHRINK-VECTOR used to be, an unsafe performance hack for the case where the vector cannot be accessed from interrupts/other threads. * don't call %ARRAY-DISPLACED-P on vectors
Fix bug reported by Kalle Olavi Niemitalo on comp.lang.lisp ... create CONDITION-CLASSes for DEFINE-CONDITION forms eagerly. ... oh, but wait. CONDITION-CLASSes are already created as part of the reader/writer generation, for those condition classes with slots, in the (find-class condition) incantation of install-condition-fooer-function. ... and oh joy, reinitialize-instance on condition-classes removes accessors but does not add them again. Add a reinitialize-instance :after method to put them back. ... add a comment explaining that I have no idea what is meant to happen. (CMUCL has a bogus CLASS-DIRECT-SLOTS on condition instances, which explains somewhat why it seems to work there...)
* protect hash table operations with spinlocks on threaded builds => ** no more memory corruption due to SHRINK-VECTOR in hash table code ** no more hangs caused by a corrupted NEXT-VECTOR that is cyclic ** as a side effect hash tables are thread safe (but it's not part of the contract, do your own locking) ** slower hash tables
Improve loop index variable detection: * Allow the initial value and the step to be of different types, as long as the initial value is more contagious (e.g (LOOP FOR I FROM 1.0 TO 5.0 ...)) * Allow modification to the index variable with -, not just + (e.g (LOOP REPEAT 5 ...))
Fix a small pprint performance problem caused by the Unicode work. * Allow using SIMPLE-BASE-STRINGs directly as pprint suffix/prefix, instead of coercing them to (SIMPLE-ARRAY CHARACTER). * OOAOM the idiom used in for specializing a block of code for several types of strings.
* Merge patch from Cyrus Harmon (sbcl-devel 2005-11-04), plus slightly twisted tests. Note: This has been tested on ppc/darwin and x86/linux, but the new tests are active on all platforms -- using alignment requirements I've essentially guessed.
Have you ever tried jumping to the definition of a method combination with M-. only to be thwarted by Slime/SBCL? Yeah, me neither... * Record source location information for all definition forms. (Except when (AND (> SPACE DEBUG) (> SPACE 1))). * On by default, can be disabled by removing :SB-SOURCE-LOCATIONS from build-features (if you really want to save that last 60kB of space...) * Add structure SB-C:DEFINITION-SOURCE-LOCATION for saving the source locations * Annotate all definition form macros with calls to SB-C:SOURCE-LOCATION, which is compiler-macro-expanded to a D-S-L instance and saved into an appropriate place. * For cases where no appropriate place exists, add new info class :SOURCE-LOCATION. * Some trickery required to get the source locations recorded for early definitions. * SB-INTROSPECT:FIND-DEFINITION-SOURCE no longer tries to guess what definition to search for when given a symbol. (I don't feel too bad about this, since the interface is explicitly not supported yet). * New function SB-INTROSPECT:FIND-DEFINITION-SOURCES-BY-NAME for querying, e.g (FIND-DEFINITION-SOURCES-BY-NAME '*FOO* :VARIABLE). Returns a list of locations (to support things like (F-D-S-B-N 'FOO :METHOD) or (F-D-S-B-N 'foo :VOP)). * Stalate the fasls.