X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=doc%2Fmanual%2Fcompiler.texinfo;h=e9c2e822382fafebe5e07336826e09dd4b87a5e1;hb=b5c69cfe906a31ae57bb0f18c67af9d2eaa1dfef;hp=cfc034fe787bdf6dbee119e06edd5e8619759e1a;hpb=b63c4fb9b98fa8188e17ba926e150ba417a74635;p=sbcl.git diff --git a/doc/manual/compiler.texinfo b/doc/manual/compiler.texinfo index cfc034f..e9c2e82 100644 --- a/doc/manual/compiler.texinfo +++ b/doc/manual/compiler.texinfo @@ -16,6 +16,7 @@ separate that they have their own chapter, @ref{Efficiency}. * Compiler Policy:: * Compiler Errors:: * Open Coding and Inline Expansion:: +* Interpreter:: @end menu @node Diagnostic Messages @@ -125,7 +126,7 @@ controlled via the alist @comment node-name, next, previous, up @subsection Diagnostic Severity @cindex Severity of compiler messages -@cindex compiler diagnostic severity +@cindex Compiler Diagnostic Severity @tindex error @tindex warning @tindex style-warning @@ -389,7 +390,7 @@ This message is not saying ``there is a problem somewhere in this @node The Processing Path @comment node-name, next, previous, up @subsubsection The Processing Path -@cindex Processing path +@cindex Processing Path @cindex Macroexpansion @cindex Source-to-source transformation @@ -1016,8 +1017,8 @@ character position and gives up on the entire source file. @comment node-name, next, previous, up @section Open Coding and Inline Expansion @cindex Open-coding -@cindex inline expansion -@cindex static functions +@cindex Inline expansion +@cindex Static functions Since Common Lisp forbids the redefinition of standard functions, the compiler can have special knowledge of these standard functions @@ -1088,3 +1089,20 @@ open-coded. Even when not open-coded, a call to a standard function may be transformed into a different function call (as in the last example) or compiled as @emph{static call}. Static function call uses a more efficient calling convention that forbids redefinition. + +@node Interpreter +@comment node-name, next, previous, up +@section Interpreter +@cindex Interpreter +@vindex sb-ext:*evaluator-mode* + +By default SBCL implements @code{eval} by calling the native code +compiler. SBCL also includes an interpreter for use in special cases +where using the compiler is undesireable, for example due to compilation +overhead. Unlike in some other Lisp implementations, in SBCL interpreted +code is not safer or more debuggable than compiled code. + +Switching between the compiler and the interpreter is done using the +special variable @code{sb-ext:*evaluator-mode*}. As of 0.9.17, valid +values for @code{sb-ext:*evaluator-mode*} are @code{:compile} and +@code{:interpret}.