pike.git / src / interpret_functions.h

version» Context lines:

pike.git/src/interpret_functions.h:1511:       {    struct catch_context *new_catch_ctx = alloc_catch_context();    DO_IF_REAL_DEBUG (    new_catch_ctx->frame = Pike_fp;    init_recovery (&new_catch_ctx->recovery, 0, 0, PERR_LOCATION());    );    DO_IF_NOT_REAL_DEBUG (    init_recovery (&new_catch_ctx->recovery, 0);    ); -  new_catch_ctx->save_expendible = Pike_fp->expendible; +  new_catch_ctx->save_expendible = frame_get_expendible(Pike_fp);    JUMP_SET_TO_PC_AT_NEXT (addr);    new_catch_ctx->continue_reladdr = GET_JUMP()    /* We need to run the entry prologue... */    - ENTRY_PROLOGUE_SIZE;       new_catch_ctx->next_addr = addr;    new_catch_ctx->prev = Pike_interpreter.catch_ctx;    Pike_interpreter.catch_ctx = new_catch_ctx;    DO_IF_DEBUG({    TRACE((3,"- Pushed catch context %p\n", new_catch_ctx));    });    }    -  Pike_fp->expendible = Pike_fp->locals + Pike_fp->num_locals; +  Pike_fp->expendible_offset = Pike_fp->num_locals;       /* Need to adjust next_addr by sizeof(INT32) to skip past the jump    * address to the continue position after the catch block. */    addr = (PIKE_OPCODE_T *) ((INT32 *) addr + 1);       if (Pike_interpreter.catching_eval_jmpbuf) {    /* There's already a catching_eval_instruction around our    * eval_instruction, so we can just continue. */    debug_malloc_touch_named (Pike_interpreter.catch_ctx, "(1)");    /* Skip past the entry prologue... */
pike.git/src/interpret_functions.h:1592:       DO_IF_DEBUG ({    TRACE((3,"- Caught exception. catch context: %p\n", cc));    if (!cc) Pike_fatal ("Catch context dropoff.\n");    if (cc->frame != Pike_fp)    Pike_fatal ("Catch context doesn't belong to this frame.\n");    });       debug_malloc_touch_named (cc, "(3)");    UNSETJMP (cc->recovery); -  Pike_fp->expendible = cc->save_expendible; +  frame_set_expendible(Pike_fp, cc->save_expendible);    move_svalue (Pike_sp++, &throw_value);    mark_free_svalue (&throw_value);    low_destruct_objects_to_destruct();       if (cc->continue_reladdr < 0)    FAST_CHECK_THREADS_ON_BRANCH();    addr = cc->next_addr + cc->continue_reladdr;       DO_IF_DEBUG({    TRACE((3,"- Popping catch context %p ==> %p\n",
pike.git/src/interpret_functions.h:1794:      OPCODE1_RETURN(F_RETURN_LOCAL,"return local", I_UPDATE_SP|I_UPDATE_FP, {    DO_IF_DEBUG(    /* special case! Pike_interpreter.mark_stack may be invalid at the time we    * call return -1, so we must call the callbacks here to    * prevent false alarms! /Hubbe    */    if(d_flag>3) do_gc(NULL, 0);    if(d_flag>4) do_debug();    ); -  if(Pike_fp->expendible <= Pike_fp->locals + arg1) +  if(Pike_fp->expendible_offset <= arg1)    {    pop_n_elems(Pike_sp-1 - (Pike_fp->locals + arg1));    DO_IF_DEBUG(Pike_fp->num_locals = arg1);    }else{    push_svalue(Pike_fp->locals + arg1);    }    DO_DUMB_RETURN;   });      
pike.git/src/interpret_functions.h:2457:    {    PIKE_OPCODE_T *addr;    int fun;    fun=find_shared_string_identifier(Pike_fp->context->prog->strings[arg1],    p);    if(fun >= 0)    {    fun += o->prog->inherits[SUBTYPEOF(*s)].identifier_level;    if((addr = lower_mega_apply(args-1, o, fun)))    { -  Pike_fp->save_sp--; +  Pike_fp->save_sp_offset--;    Pike_fp->flags |= PIKE_FRAME_RETURN_INTERNAL;    DO_JUMP_TO(addr);    }    stack_pop_keep_top();    DO_JUMP_TO_NEXT;    }    }    }    }   
pike.git/src/interpret_functions.h:2515:    {    int fun;    PIKE_OPCODE_T *addr;    fun=find_shared_string_identifier(Pike_fp->context->prog->strings[arg1],    p);    if(fun >= 0)    {    fun += o->prog->inherits[SUBTYPEOF(*s)].identifier_level;    if((addr = lower_mega_apply(args-1, o, fun)))    { -  Pike_fp->save_sp--; +  Pike_fp->save_sp_offset--;    Pike_fp->flags |=    PIKE_FRAME_RETURN_INTERNAL |    PIKE_FRAME_RETURN_POP;    DO_JUMP_TO(addr);    }    pop_2_elems();    DO_JUMP_TO_NEXT;    }    }    }
pike.git/src/interpret_functions.h:2576:    {    int fun;    PIKE_OPCODE_T *addr;    fun=find_shared_string_identifier(Pike_fp->context->prog->strings[arg1],    p);    if(fun >= 0)    {    fun += o->prog->inherits[SUBTYPEOF(*s)].identifier_level;    if((addr = lower_mega_apply(args-1, o, fun)))    { -  Pike_fp->save_sp--; +  Pike_fp->save_sp_offset--;    DO_IF_DEBUG(Pike_fp->next->pc=0);    unlink_previous_frame();    DO_JUMP_TO(addr);    }    stack_pop_keep_top();    DO_DUMB_RETURN;    }    }    }    }
pike.git/src/interpret_functions.h:2845:    new_frame=alloc_pike_frame(); \    new_frame->next=Pike_fp; \    \    JUMP_SET_TO_PC_AT_NEXT (addr); \    Pike_fp->return_addr = (PIKE_OPCODE_T *)(((INT32 *) addr) + 1); \    addr += GET_JUMP(); \    \    addr += ENTRY_PROLOGUE_SIZE; \    \    new_frame->args = args; \ -  new_frame->locals=new_frame->save_sp=new_frame->expendible=Pike_sp-args; \ +  new_frame->locals=Pike_sp-args; \ +  new_frame->save_sp_offset = 0; \ +  new_frame->expendible_offset = 0; \    new_frame->save_mark_sp = Pike_mark_sp; \    DO_IF_DEBUG(new_frame->num_args=0;new_frame->num_locals=0;); \    SET_PROG_COUNTER(addr); \    new_frame->fun=Pike_fp->fun; \    DO_IF_PROFILING( new_frame->ident=Pike_fp->ident ); \    new_frame->current_storage=Pike_fp->current_storage; \    if(Pike_fp->scope) add_ref(new_frame->scope=Pike_fp->scope); \    add_ref(new_frame->current_object = Pike_fp->current_object); \    add_ref(new_frame->current_program = Pike_fp->current_program); \    new_frame->context = Pike_fp->context; \
pike.git/src/interpret_functions.h:3079:   OPCODE2(F_MAGIC_TYPES, "::_types", I_UPDATE_SP, {    push_magic_index(magic_types_program, arg2, arg1);   });      OPCODE2(F_INIT_FRAME, "init_frame", 0, {    Pike_fp->num_args = arg1;    Pike_fp->num_locals = arg2;    });      OPCODE1(F_PROTECT_STACK, "protect_stack", 0, { -  Pike_fp->expendible = Pike_fp->locals + arg1; +  Pike_fp->expendible_offset = arg1;    });      OPCODE2(F_FILL_STACK, "fill_stack", I_UPDATE_SP, {    INT32 tmp = (Pike_fp->locals + arg1) - Pike_sp;    if (tmp > 0) {    if (arg2) {    push_undefines(tmp);    } else {    push_zeroes(tmp);    }    }    });      OPCODE1(F_MARK_AT, "mark_at", I_UPDATE_SP, {    *(Pike_mark_sp++) = Pike_fp->locals + arg1;    });      /*   #undef PROG_COUNTER   */