";;; 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 rthrw instruction\n"
"\n"
";;; Exception type and exception value are already set: no need to\t\n"
";;; touch them.\n"
"\n"
";;; Pop the exceptions stack:\n"
"(set! exceptions-stack (cdr exceptions-stack))\n"
"\n"
";;; Clear the popped part of the stack:\n"
"(clear-stack (1+ (vector-ref (car exceptions-stack)\n"
"\t\t\t     2)) ; the saved stack-pointer, incremented\n"
"\t     stack-pointer)\n"
"\n"
";;; Update FP, SP and environment:\n"
"(set! frame-pointer\n"
"      (vector-ref (car exceptions-stack)\n"
"                  1)) ; saved frame-pointer\n"
"(set! stack-pointer\n"
"      (vector-ref (car exceptions-stack)\n"
"                  2)) ; saved stack-pointer\n"
"(set! environment\n"
"      (vector-ref (car exceptions-stack)\n"
"                  3)) ; saved environment\n"
"\n"
";;; Jump to the handler:\n"
"(vector-ref (car exceptions-stack)\n"
"            0) ; saved instruction-pointer to handler\n"
""
