* TRULY-THE interacts badly with *CHECK-CONSISTENCY*.
…urn type * Make REPLACE *CHECK-CONSISTENCY* happy: the transforms used to have return type (VALUES NULL &OPTIONAL), whereas the out-of-line definitions had return type (VALUES &OPTIONAL).
* 0.9.8.19 moved zeroing from GC time to allocation time, but after the point where the check was done -- thus causing the check to fail immediately if it was turned on. This commit moves the check after the zeroing, so we're good again. ...which also means that gencgc_zero_check=1 is not very interesting anymore, since the zeroing happens in the immediate vicinity of the check.
…86/Linux * Nothing serious seemed to be going on, though, but since C has nasty signed vs unsigned comparison semantics, it is better to be clear about what is going on.
* Using the value from the saved core is wrong. Fix by Suzuki Kei on sbcl-devel.
20-25% improvement for the test-case in bug 188. * New slot in LAMBDA-VAR: LAST-INITIAL-TYPE, which holds the last initial-type for that variable seen by PROPAGATE-FROM-SETS. * Be lazy, and don't PROPAGATE-TO-REFS unless something of interest has happened, to wit: -- One of the CSET nodes has a new, more specific type. -- INITIAL-TYPE has become more specific. This also allows us elide TYPE-UNION computation in the uninteresting cases. * Requires having NODE-REOPTIMIZE set when IR1-OPTIMIZE-SET is called.
* Multiple places can use the same type, no need to cons a new one each time through the loop.
* For negated EQL constaints, don't cons up multiple MEMBER-TYPE instances during a single pass through CONSTRAIN-REF-TYPE: accumulate a single XSET, and turn it into a MEMBER-TYPE only at the end. * Don't construct (NOT (MEMBER ...TON-OF-SYMBOLS...)) types at all, unless SPEED > COMPILATION speed. Knowing that a variable is not in a set of symbols is seldom useful, and compiling large CASE statements with symbols as keys can end up spending huge amounts of time just building these sets. * Adjust FD-STREAMS to use an ECASE in the single place in SBCL where without the aforementioned constraint propagation the compiler is not able to determine sufficiently constrain the result type. (Not needed since the build has SPEED > COMPILATION-SPEED, but keeps things non-brittle.)
Sort out accumulated bitrot on the Alpha: * xrefs slot for simple_fun: a couple of places in alpha-assem.S * arch_skip_instruction(): compilers more careful about lvalues; * arch_handle_single_step_trap(): implement it. (Untested) * ld-script.alpha-linux: update for newer systems. Works For Me. Other systems may vary.
* %SINGLE-FLOAT and %DOUBLE-FLOAT should not be flushable. * BUGS entry remains: should (COERCE (EXPT 2 1024) 'SINGLE-FLOAT) really signal a TYPE-ERROR?
* Instead of searching for the external-format object to obtain the character-width function, store the function (or its result for fixed-width external formats) directly into the FD-STREAM object. Non-FD-STREAM ANSI-STREAMS use the old strategy.
The CTOR make-instance optimization machinery closes over the class wrapper of the class in question; however, there are code paths that cause wrappers to be invalidated without causing all constructors to be recomputed: for instance, the redefinition of a superclass, or calling MAKE-INSTANCES-OBSOLETE. This would mean that the CTORs would create obsolete instances, which would instantly trap, showing up as slowness in CLOS-heavy code. Problem and fix largely identified by Andy Hefner in <http://paste.lisp.org/display/55689>.
* Use a DEFSTRUCT instead of a vector for clarity. Also eliminate the unused mystery slot. * Inline code of GET-NEW-FUN-GENERATOR-INTERNAL in GET-NEW-FUN-GENERATOR. * Store in a hash-table for O(1) goodness instead of a list. * ENSURE-FGEN instead of MAKE-FGEN + STORE-FGEN. * When lifting constants out of code in FGEN construction, leave constant lists in place: several of the functions we generate FGENs for have ETYPECASE forms, which will otherwise cause us to close over the :EXPECTED-TYPE and :POSSIBILITIES arguments to ERROR for no good reason.
* Use VOP translation instead of %PRIMITIVE. * On x86 and x86-64 improve the pointer-hash slightly: use the whole address, but none of the tag bits in the hash. * Fix type in INDEX-FOR-HASHING: the first argument is a HASH, not an INDEX. Given the better quality of low bits on x86oids (and hopefully soon on others as well), adjust the mixing a bit.
* Don't expand into a final (COND), but directly to NIL (easier to read macroexpansion.) * Check for the common case of final T, so that the last clause can be unconditional instead of generating redundant IF.
* Implement directly on top of IF & PROGN instead of COND: clearer macroexpansion, and slightly less work to compile to boot.
* ...and add the "reported by" left out from the last commit.
* Respect printer-control variables when printing readably. * Print non-null weakness when printing unreadably.
* Revert part of the *SHOW-ENTRY-POINT-DETAILS* functionality: always return the DEBUG-FUN-KIND from FRAME-CALL, so that instead of the rather confusing (FOO MY-ARGUMENT) (FOO MY-ARGUMENT) a slightly mysterious but hopefully less confusing (FOO MY-ARGUMENT) (FOO MY-ARGUMENT) [:EXTERNAL] appears in backtraces where the XEP hasn't been tail-merged.
* Thanks to Attila Lendvai.
* Fix it, and add a test specifically for MEMBER using EQL.
* Optimization in CONCATENATE broke SB-SHOW in the cross compiler. Disable this optimization in SB-SHOW.
* Add :SYNCHRONIZED to thr DEFKNOWN. * Also fix a bit of totally broken indentation in the hash-table code. * Cautionary comment about a potential type-error in parallel code. * More threaded hash-table tests.
* Getting NIL as the source-name of a functional is pretty bogus, and getting it as the debug-name messes with our careful debug-name sanity checks. So don't do it then.
* Allows using SB-COVER with (RESTRICT-COMPILER-POLICY 'SAFETY 3).
* Thanks to Peter Graves.
* BSD may be happy with just three Xs in the template, but Linux at least wants six.
* Using XCL as the host compiler did not work due to a FOR/WHILE/FOR sequence (which is not defined in the spec, though supported by most implementations). Reported by Peter Graves.
…MKDTEMP * Remove the alien struct consing from the calls -- just use the SAP directly. * Automagic unsupportedness handling for platforms that miss any of these. * Rudimentary tests. * #-win32 for now.
* On the ASDF side of the wall merge the empty SBCL_HOME handling to upstream, and canonicalize the whitespace there.
* (QUOTE ...) is never a valid type-specifier. * When printing the macro-form responsible for an error, increase *PRINT-LEVEL* from 1 to 3, for a slightly better compiler-log reading experience.
…mes. * GET-DESCRIPTOR-FOR is defined with &rest, &key, and &allow-other-keys, and one pathway passes the &rest list to OPEN. A recent addition of a keyword argument to GET-DESCRIPTOR-FOR that OPEN didn't recognize created a problem. * Add test for the correct behavior.
* (TRACE "FOO") now traces SETF-functions as well. * (UNTRACE "FOO") is now supported.