pike.git
/
src
/
docode.c
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/src/docode.c:1:
/* || 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" #include "las.h" #include "program.h" #include "pike_types.h" #include "stralloc.h" #include "interpret.h" #include "constants.h" #include "array.h"
pike.git/src/docode.c:2067:
current_label->break_label=alloc_label(); if (TEST_COMPAT(7,0)) current_label->continue_label = current_label->break_label; DO_CODE_BLOCK(CAR(n)); ins_label(current_label->break_label); 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; } case F_LVALUE_LIST: ret = do_docode(CAR(n),DO_LVALUE); return ret + do_docode(CDR(n),DO_LVALUE); case F_ARRAY_LVALUE: tmp1=do_docode(CAR(n),DO_LVALUE);