[d4b41d] by Lutz Euler
Add tests for two bugs that were incidentally fixed some time ago.
Commit b894cb41d869bda6ba0c54a491becc7bb58375c1 (make FORMAT signal
Commit 96c62c30ec9164419c790b2fbea953da2193620f (ensure that GCD returns
 by Nikodemus Siivola
adjust compiler-macro expansion and lambda-list parsing
* Don't convert errors during compiler-macro expansion into runtime
This lives in CAREFUL-EXPAND-MACRO.
* Make compiler not expand compiler-macros if there are arguments in keyword
This lives in two places:
(1) VERIFY-KEYWORDS signals a COMPILER-MACRO-KEYWORD-PROBLEM when it
(2) IR1-CONVERT-FUNCTOID handles this condition by unwinding from the
Calling COMPILER-MACRO-FUNCTION directly behaves exactly as before, for
(define-compiler-macro foo (&key ((a ax) t)) (format nil "a=~S" ax))
The compiler would refuse to expand (foo a 42) unless
(defconstant a 'a)
had been done beforehand, but calling the COMPILER-MACRO-FUNCTION directly
[a0773e] by Nikodemus Siivola
sb-alien: some alien refactoring
* Rename EXTRACT-ALIEN-VALUE & DEPOSIT-ALIEN-VALUE to %ALIEN-VALUE and
* Split HEAP-ALIEN-INFO-SAP-FORM field into HEAP-ALIEN-INFO-ALIEN-NAME and
* Better error checking in PICK-LISP-AND-ALIEN-NAMES, and an error message
[7fccd3] by Lutz Euler
Micro-optimization: Avoid byte register writes on x86-64 in LOAD-TYPE.
The optimization guide for AMD's x86-64 processors recommends not
To follow this recommendation, modify LOAD-TYPE to use MOVZX instead of
The effect on code size is small and mixed.
[4de152] by Lutz Euler
Add a test for range reduction of trigonometric functions on non-x86.
Trigonometric functions of large float arguments yield differing results
Add a test for the results expected from GNU libm and enable it for
[d7c938] by Lutz Euler
Skip the float.pure.lisp/RANGE-REDUCTION test outside x86.
The test was and is meant only to be used on x86 as it tests for results
Revert this by skipping the test on everything except x86. Augment
[3352e4] by Nikodemus Siivola
elide value cells for NLXs when it seems like the right thing
Previously we only did this for unsafe code.
Now we also elide them for
(1) exits from DX functions: if a DX function escapes its proper context,
(2) functions that cannot escape. Since the escape analysis isn't yet very
If you're wondering if this is worth it, compare
(defun feh (x)
(time (loop repeat 10000 do (feh t)))
with and without the escape analysis.