x86-64 floating point improvements: * Optimization: fewer moves on floating point add/sub/mul/div. Only use a temporary xmm register if absolutely needed. * Optimization: When restoring xmm15 to zero after a c-call, use xorpd instead of a temporary register and movq. * Replace broken x87 FLOATING-POINT-MODES and SET-FLOATING-POINT-MODES with SSE code that uses the mxcsr control register. * Fix movd / movq from a xmm register to a gp register. * Add new instructions: ldmxcsr, stmxcsr
First stab at fixing bug #7. To get output approximately as verbose as the old behaviour use :TOP-LEVEL-FORMS as the value of the :PRINT option to COMPILE-FILE. Note: Giving users control over the way things are printed via *COMPILER-PRINT-VARIABLE-ALIST* is OTOH a good thing, but it also seems to be used for ratheer diverse things, and people could reasonably want to customize them separately. Gah. Also list x86/FreeBSD4 as "expected to pass tests" in make.sh output, as that seems to be the case.
Bug orginally reported and fix provided by Cheuksan Wang, basis for test-case provided by Jason Dagit.
* algorithm by Harald Hanche-Olsen. * good: less memory-intensive, faster for smallish bignums. * bad: more CPU-intensive for large eg. 2^1000000) bignums, around order of 2^10000000 becoming essentially unprintable. lazy alien resolution improvement: * resolve undefined functions to the address of undefined_alien_function instead of the guard page to work around the bus error on ppc/darwin. * also buys us discrimination between undefined alien variables and functions (on all platforms). note ppc/darwin problems revealed by tests/ in BUGS, and disable those tests: * floating-point overflow not signalled * type-error from sb-profile:report * bit-and with huge bit-vectors fails with a lost gc-invariant (maybe a general cheney-gc problem?) => All tests now pass on ppc/darwin, note this in the message at the end of make.sh, marking x86/Linux and ppc/Darwin as platforms where all tests are supposed to pass.
Optimize float/fixnum comparisons, primarily for the benefit of McCLIM. If the fixnum's value is in a range where it's guaranteed to have an exact float representation, coerce it to a float and do a float comparison. Otherwise fall back to the old behaviour of rationalizing the float.
of EQL forms.
Various x86-64 improvements. * Fix some SB-ALIEN:INT / SB-ALIEN:INTEGER confusion in tests. (Patch by Vincent Arkesteijn on sbcl-devel, "Re: x86-64 (aka AMD64, EMT-64) support" on 2005-02-05). * Align the stack to 16-byte boundaries for c-calls, as required by the ABI. (Patch by Cheuksan Edward Wang). * Omit unneccessary rex-prefix on indirect JMP. (Patch by Cheuksan Edward Wang). * Disassembler improvements. (Patch by Cheuksan Edward Wang).
Maybe speed up PCL a tiny bit more ... make the slot positioning a little less confusing, so that the 'same' slot tends to be in the same location; ... this should help the clever DFUN mechanism to keep neat ones like ONE-INDEX around; ... (also this puts slots in objects in the 'expected' order -- frob sb-aclrepl's dealing with the unexpected
function names. Coerce them to functions once instead of each time they are applied (similar to an earlier enhancement of REDUCE).
Refactor sign-extension of signed c-call return values on x86-64: * Also sign extend short ints (fixes bug reported by Kevin Rosenberg on sbcl-devel, "FFI size error in sbcl-amd64"). * Move the sign-extension to a :naturalize-gen alien-type-method. * Remove signed-byte-32 ptype (used only for some sign-extension hacks, which have now been removed). * Add some tests.
SET-SYNTAX-FROM-CHAR fix ... SET-SYNTAX-FROM-CHAR now copies the dispatch table if necessary. Customizeable reader fixes (PFD SYNTAX.FOO ansi-tests) ... Better delineation between character syntax and character constituent trait; ... rename SECONDARY-ATTRIBUTE to CONSTITUENT-TRAIT; ... renumber +char-attr-multiple-escape+ to below +char-attr-consituent+; ... rename ESCAPE to SINGLE-ESCAPE; ... in token reader helper macros CHAR-CLASS<n>, get CONSTITUENT-TRAIT only if the character is a constituent.