Branch: Tag:

2006-03-15

2006-03-15 12:29:15 by Henrik Grubbström (Grubba) <grubba@grubba.org>

F_CATCH should now work again on architectures where F_ENTRY is used.

Rev: src/docode.c:1.187
Rev: src/interpret_functions.h:1.191

2:   || This file is part of Pike. For copyright information see COPYRIGHT.   || Pike is distributed under GPL, LGPL and MPL. See the file COPYING   || for more information. - || $Id: docode.c,v 1.186 2006/03/02 10:24:47 grubba Exp $ + || $Id: docode.c,v 1.187 2006/03/15 12:29:02 grubba Exp $   */      #include "global.h"
2074:    emit0(F_EXIT_CATCH);    POP_STATEMENT_LABEL;    current_switch.jumptable = prev_switch_jumptable; -  tmp2 = do_branch (-1); +  do_branch (tmp1);    -  ins_label(DO_NOT_WARN((INT32)tmp1)); +     current_stack_depth++;    /* Entry point called via catching_eval_instruction() after -  * catching an error. */ +  * catching an error. +  * +  * NB: This is reached by subtracting ENTRY_PROLOGUE_SIZE +  * from the label below. +  * NB: The label must be after the entry, since it may expand to code +  * that requires the entry code to have run. +  */    emit0(F_ENTRY); -  +  ins_label(DO_NOT_WARN((INT32)tmp1));    -  ins_label(DO_NOT_WARN((INT32)tmp2)); +     POP_AND_DONT_CLEANUP;    return 1;    }