pike.git
/
src
/
docode.c
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/src/docode.c:3261:
/* Used by eval_low() to build code for constant expressions. */ INT32 docode(node *n) { struct compilation *c = THIS_COMPILATION; INT32 entry_point; int label_no_save = label_no; int generator_local_save = Pike_compiler->compiler_frame->generator_local; struct byte_buffer instrbuf_save = instrbuf; struct statement_label *label_save;
+
label_save = current_label;
+
current_label = NULL;
PUSH_STATEMENT_LABEL;
-
label_save = current_label->prev;
-
current_label->prev = NULL;
+
PUSH_CLEANUP_FRAME(NULL, NULL); label_no=1; current_stack_depth = 0; Pike_compiler->compiler_frame->generator_local = -1; init_bytecode(); insert_opcode0(F_ENTRY, n->line_number, n->current_file); /* NB: Add a mark (or rather do_pop_mark cleanup callback) so that * F_PUSH_ARRAY stays happy even when n is an F_ARG_LIST.
pike.git/src/docode.c:3301:
POP_AND_DONT_CLEANUP; insert_opcode0(F_DUMB_RETURN, n->line_number, n->current_file); entry_point = assemble(0); /* Don't store linenumbers. */ instrbuf=instrbuf_save; Pike_compiler->compiler_frame->generator_local = generator_local_save; current_stack_depth = cleanup_frame__.stack_depth; POP_AND_DONT_CLEANUP;
-
current_label->prev = label_save;
+
POP_STATEMENT_LABEL; Pike_compiler->compiler_frame->generator_local = generator_local_save;
-
+
current_label = label_save;
label_no = label_no_save; return entry_point; }