pike.git / src / interpret_functions.h

version» Context lines:

pike.git/src/interpret_functions.h:543:    else    {    push_svalue( dst );    push_int( arg2 );    f_add(2);    assign_svalue( Pike_fp->locals+arg1,Pike_sp-1);    pop_stack();    }   });    + OPCODE2(F_ADD_LOCAL_INT, "local += number local", 0,{ +  struct svalue *dst = Pike_fp->locals+arg1; +  if( dst->type == PIKE_T_INT +  DO_IF_BIGNUM( +  &&(!INT_TYPE_ADD_OVERFLOW(dst->u.integer,arg2)))) +  { +  SET_SVAL_SUBTYPE(*dst,NUMBER_NUMBER); +  dst->u.integer += arg2; +  push_int( dst->u.integer ); +  } +  else +  { +  push_svalue( dst ); +  push_int( arg2 ); +  f_add(2); +  assign_svalue( Pike_fp->locals+arg1,Pike_sp-1); +  } + }); +    OPCODE1(F_INC_LOCAL, "++local", I_UPDATE_SP, {    if( (TYPEOF(Pike_fp->locals[arg1]) == PIKE_T_INT)    DO_IF_BIGNUM(    && (!INT_TYPE_ADD_OVERFLOW(Pike_fp->locals[arg1].u.integer, 1))    )    )    {    push_int(++(Pike_fp->locals[arg1].u.integer));    SET_SVAL_SUBTYPE(Pike_fp->locals[arg1], NUMBER_NUMBER); /* Could have UNDEFINED there before. */    } else {
pike.git/src/interpret_functions.h:1591:    DONT_BRANCH();    pop_2_elems();    }   });      OPCODE0_BRANCH(F_FOREACH, "foreach", 0, { /* array, lvalue, i */    if(TYPEOF(Pike_sp[-4]) != PIKE_T_ARRAY)    PIKE_ERROR("foreach", "Bad argument 1.\n", Pike_sp-3, 1);    if(Pike_sp[-1].u.integer < Pike_sp[-4].u.array->size)    { -  if(Pike_sp[-1].u.integer < 0) +  DO_IF_DEBUG(if(Pike_sp[-1].u.integer < 0)    /* Isn't this an internal compiler error? /mast */ -  Pike_error("Foreach loop variable is negative!\n"); +  Pike_error("Foreach loop variable is negative!\n"));    assign_lvalue(Pike_sp-3, Pike_sp[-4].u.array->item + Pike_sp[-1].u.integer);    DO_BRANCH();    Pike_sp[-1].u.integer++;    DO_IF_DEBUG (    if (SUBTYPEOF(Pike_sp[-1]))    Pike_fatal ("Got unexpected subtype in loop variable.\n");    );    }else{    /* write_to_stderr("foreach\n", 8); */    DONT_BRANCH();
pike.git/src/interpret_functions.h:2542:    \    addr += ENTRY_PROLOGUE_SIZE; \    \    if (Pike_interpreter.trace_level > 3) { \    fprintf(stderr, "- Addr = 0x%+lx\n", addr); \    } \    \    new_frame->args = args; \    new_frame->locals=new_frame->save_sp=new_frame->expendible=Pike_sp-args; \    new_frame->save_mark_sp = new_frame->mark_sp_base = 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; \    \    DO_IF_PROFILING({ \