pike.git / src / docode.c

version» Context lines:

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;   }