Remove SIMPLE-EVAL-IN-LEXENV with #!+sb-fasteval
commitfdc4e9fa86b5eaaf8939f004a66e4be075069aa8
authorDouglas Katzman <dougk@google.com>
Thu, 5 May 2016 23:25:19 +0000 (5 19:25 -0400)
committerDouglas Katzman <dougk@google.com>
Thu, 5 May 2016 23:58:27 +0000 (5 19:58 -0400)
tree29ce125b589618cbe3863927f0c5017b756226af
parentb29f6c2670c6e9f71c466004a55073f03df94037
Remove SIMPLE-EVAL-IN-LEXENV with #!+sb-fasteval

When *EVALUATOR-MODE* is :COMPILE, the tiny evaluator is redundant
with fasteval. Two small adjustments to fasteval make it do the
same thing that simple-eval was trying to do - avoid compiling
whenever possible, and:
* instead of producing a funcallable instance when encountering
  a FUNCTION operator, punt to the compiler.
* the set of special operators to interpret is smaller than the
  full set of operators that could be interpreted.

Also fix package locks. No new test; an existing test found the bug.
src/code/eval.lisp
src/cold/warm.lisp
src/interpreter/env.lisp
src/interpreter/eval.lisp
src/interpreter/special-forms.lisp