Implemented WITH-BACKEND and small interpreter fix.
- A new special form, EXT:WITH-BACKEND allows us to select the code depending
on whether it is going to be processed by the interpreter or by the C
(defun example ()
(ext:with-backend (:bytecodes) (print 3))
(ext:with-backend (:c/c++) (print 2)))
The two currently available backends are :bytecodes and :c/c++. Note that
when the backend does not match the value, the form is replaced with (VALUES).
- Some forms, such as LIST, CONS, etc, when optimized by the interpreter,
compiled their arguments as toplevel forms, causing the right result,
but out of order evaluation.