";;; This file is part of GNU epsilon, a functional language implementation\n"
"\n"
";;; Copyright (C) 2003 Luca Saiu\n"
"\n"
";;; GNU epsilon is free software; you can redistribute it and/or modify\n"
";;; it under the terms of the GNU General Public License as published\n"
";;; by the Free Software Foundation; either version 2, or (at your\n"
";;; option) any later version.\n"
"\n"
";;; GNU epsilon is distributed in the hope that it will be useful, but\n"
";;; WITHOUT ANY WARRANTY; without even the implied warranty of\n"
";;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n"
";;; General Public License for more details.\n"
"\n"
";;; You should have received a copy of the GNU General Public License\n"
";;; along with epsilon; see the file COPYING.  If not, write to the\n"
";;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n"
";;; Boston, MA 02111-1307, USA.\n"
"\n"
"\n"
";;; Code for the s_cll instruction\n"
"\n"
"(let* (;;; The environment without the s-link\n"
"       (nearly-environment (do ((built-environment (make-vector (1+ integer-parameter-1)))\n"
"\t\t\t\t(i integer-parameter-1 (1- i)))\n"
"\t\t\t       ((= i 0) built-environment)\n"
"\t\t\t     (vector-set! built-environment i (pop-stack))))\n"
"       (closure (pop-stack))\n"
"       (new-environment (begin\n"
"\t\t\t  (vector-set! nearly-environment 0 (vector-ref closure 1))\n"
"\t\t\t  nearly-environment)))\n"
"  (enlarge-stack (+ stack-pointer instructions-number))\n"
"  (push-stack frame-pointer) ; saved frame-pointer\n"
"  (set! frame-pointer stack-pointer) ; the new frame begins here\n"
"  (push-stack environment) ; saved environment\n"
"  (push-stack (1+ instruction-pointer)) ; saved instruction-pointer\n"
"  (set! environment new-environment)\n"
"\n"
";(display environment)(newline)\n"
"\n"
"  ;; The returned value:\n"
"  (vector-ref closure 0))\n"
""
