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,
       trying to perform NLX to a stale tag is the least of our worries.

   (2) functions that cannot escape. Since the escape analysis isn't yet very
       tested, disable it for safe code, though. If this raises hairs on your
       neck, consider this: even if our analysis is wrong, and a function we
       didn't think could escape does, we're in the land of "undefined
       consequences" anyways.

       If you're wondering if this is worth it, compare

         (defun feh (x)
           (flet ((meh () (return-from feh 'meh)))
             (typecase x
              (cons (or (car x) (meh)))
              (t (meh)))))

         (time (loop repeat 10000 do (feh t)))

       with and without the escape analysis.
emit compiler notes of NLX value-cells when (> SPEED SAFETY)

  People have a right to know: it's NEWS.
Restore build on sparc/solaris.

gc-internal.h: include interr.h before `lose' is used.

Fixes lp#1008506.
Small enhancements to ISQRT

Replace MULTIPLE-VALUE-LIST with MULTIPLE-VALUE-BIND which conses less
and is slightly faster.

Correct the docstring.

Add a test for correctness.
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
the x87 FPU computes, which can differ from those on other platforms.
It was accidentally enabled for all platforms with commit
4c81c652cdc32faefee1bccb84c3c9a7854e3edd.

Revert this by skipping the test on everything except x86. Augment
the test's name and improve its comment so that it hopefully won't be
enabled again everywhere so easily.
Add a test for range reduction of trigonometric functions on non-x86.

Trigonometric functions of large float arguments yield differing results
depending on how range reduction is done. There is already a test for
the results expected on x86, float.pure.lisp/(:range-reduction :x87).

Add a test for the results expected from GNU libm and enable it for
all platforms except x86. The new test is impure and therefore added
to "float.impure.lisp". Move the x86 test there, too, to reduce the
potential for future confusion.
Fix test character.pure.lisp / BUG-994487 on non-unicode.

Replace a literal 1114111 with (1- CHAR-CODE-LIMIT) so that the test
works on #-sb-unicode, too.
Fix inline fixnum LDB on PowerPC for certain bytespecs

Previously, the inline fixnum version of (ldb (byte 8 24) -1) would
return #x3f instead of #ff.
Simplify ppc's MOVE-TO-WORD/INTEGER
In whitespace canonicalization, find a suitable make automatically
Relax an implicit restriction on the number of code constants on SPARC

Previously, LOAD-CONSTANT was restricted by SPARC's particularly small
13 bit immediate field, allowing fewer constants than on other platforms.

Fixes lp#1008996.
turn off *PRINT-PRETTY* when reporting test results, want line per result

This new format is easier to parse than the old line-wrapped output.
Update NEWS

Minor SPARC and PPC fixes.
Micro-optimization: Avoid byte register writes on x86-64 in LOAD-TYPE.

The optimization guide for AMD's x86-64 processors recommends not
to write a partial register but instead to use MOVZX to write the
corresponding 32/64-bit register. Otherwise the instruction would have
an unnecessary dependency on the most recent write to the register,
reducing the available instruction level parallelism. On Intel's
processors this is not necessary but doesn't hurt.

To follow this recommendation, modify LOAD-TYPE to use MOVZX instead of
a byte MOV and adapt the VOPs that call it: FUN-SUBTYPE, SET-FDEFN-FUN,
and WIDETAG-OF. This additionally spares a temporary register in
FUN-SUBTYPE and allows to shorten all paths through WIDETAG-OF by one
instruction.

The effect on code size is small and mixed.
sb-alien-internals: ALIEN-VALUE to extract value of a symbol bound to an alien

  Used in the evaluators. Also allows the simple evaluator to process alien
  variables without invoking the compiler.
sb-alien: some alien refactoring

  * Rename EXTRACT-ALIEN-VALUE & DEPOSIT-ALIEN-VALUE to %ALIEN-VALUE and
    (SETF %ALIEN-VALUE).

  * Split HEAP-ALIEN-INFO-SAP-FORM field into HEAP-ALIEN-INFO-ALIEN-NAME and
    -DATAP. HEAP-ALIEN-INFO-SAP-FORM becomes a function that conses up the form
    for the compiler, and HEAP-ALIEN-INFO-SAP replaces EVAL of the form.

  * Better error checking in PICK-LISP-AND-ALIEN-NAMES, and an error message
    that explains the correct form.
adjust compiler-macro expansion and lambda-list parsing

 * Don't convert errors during compiler-macro expansion into runtime
   PROGRAM-ERRORs: signal a compile-time warning, and simply decline to expand
   the compiler-macro.

   This lives in CAREFUL-EXPAND-MACRO.

 * Make compiler not expand compiler-macros if there are arguments in keyword
   positions that are not self-evaluating constant symbols.

   This lives in two places:

    (1) VERIFY-KEYWORDS signals a COMPILER-MACRO-KEYWORD-PROBLEM when it
        encounters either an unknown keyword or anything except a
        self-evaluating symbol in a keyword position when parsing
        compiler-macro keywords.

    (2) IR1-CONVERT-FUNCTOID handles this condition by unwinding from the
        compiler-macro expansion, printing a note about the problem, and
        returning the original form.

    Calling COMPILER-MACRO-FUNCTION directly behaves exactly as before, for
    both good and ill: good in the sense that it is compliant, ill in the
    sense that doing things that way may expand things the compiler would
    decline to expand:

      (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
    would expand it even without that -- as the spec unfortuntely requires.
test backtrace-interrupted-condition-wait works on Darwin/x86-64
fix :DEBUGGER :SOURCE 2 test on unithreaded builds

  Trivial layout different on debugger entry cause it to break.
a few more tests to skip on unithreaded builds