pike.git / src / interpreter.h

version» Context lines:

pike.git/src/interpreter.h:602:    sp[0].subtype=i->run_time_type;    }    sp[1].type=T_VOID;    sp+=2;    break;    }       CASE(F_INC);    {    union anything *u=get_pointer_if_this_type(sp-2, T_INT); -  if(u) +  if(u + #ifdef AUTO_BIGNUM +  && !INT_TYPE_ADD_OVERFLOW(u->integer, 1) + #endif +  )    { -  /* FIXME: Bignum. */ +     instr=++ u->integer;    pop_n_elems(2);    push_int(u->integer); -  }else{ +  break; +  }    lvalue_to_svalue_no_free(sp, sp-2); sp++;    push_int(1);    f_add(2);    assign_lvalue(sp-3, sp-1);    assign_svalue(sp-3, sp-1);    pop_n_elems(2); -  } +     break;    }       CASE(F_DEC);    {    union anything *u=get_pointer_if_this_type(sp-2, T_INT); -  if(u) +  if(u + #ifdef AUTO_BIGNUM +  && !INT_TYPE_SUB_OVERFLOW(u->integer, 1) + #endif +  )    { -  /* FIXME: Bignum. */ +     instr=-- u->integer;    pop_n_elems(2);    push_int(u->integer); -  }else{ +  break; +  }    lvalue_to_svalue_no_free(sp, sp-2); sp++;    push_int(1);    o_subtract();    assign_lvalue(sp-3, sp-1);    assign_svalue(sp-3, sp-1);    pop_n_elems(2); -  } +     break;    }       CASE(F_DEC_AND_POP);    {    union anything *u=get_pointer_if_this_type(sp-2, T_INT);    if(u)    {    /* FIXME: Bignum. */    instr=-- u->integer;
pike.git/src/interpreter.h:660:    o_subtract();    assign_lvalue(sp-3, sp-1);    pop_n_elems(3);    }    break;    }       CASE(F_INC_AND_POP);    {    union anything *u=get_pointer_if_this_type(sp-2, T_INT); -  if(u) +  if(u + #ifdef AUTO_BIGNUM +  && !INT_TYPE_ADD_OVERFLOW(u->integer, 1) + #endif +  )    { -  /* FIXME: Bignum. */ +     instr=++ u->integer;    pop_n_elems(2); -  }else{ +  break; +  }    lvalue_to_svalue_no_free(sp, sp-2); sp++;    push_int(1);    f_add(2);    assign_lvalue(sp-3, sp-1);    pop_n_elems(3); -  } +     break;    }       CASE(F_POST_INC);    {    union anything *u=get_pointer_if_this_type(sp-2, T_INT); -  if(u) +  if(u + #ifdef AUTO_BIGNUM +  && !INT_TYPE_ADD_OVERFLOW(u->integer, 1) + #endif +  )    { -  /* FIXME: Bignum. */ +     instr=u->integer ++;    pop_n_elems(2);    push_int(instr); -  }else{ +  break; +  }    lvalue_to_svalue_no_free(sp, sp-2); sp++;    assign_svalue_no_free(sp,sp-1); sp++;    push_int(1);    f_add(2);    assign_lvalue(sp-4, sp-1);    assign_svalue(sp-4, sp-2);    pop_n_elems(3); -  } +     break;    }       CASE(F_POST_DEC);    {    union anything *u=get_pointer_if_this_type(sp-2, T_INT); -  if(u) +  if(u + #ifdef AUTO_BIGNUM +  && !INT_TYPE_SUB_OVERFLOW(u->integer, 1) + #endif +  )    { -  /* FIXME: Bignum. */ +     instr=u->integer --;    pop_n_elems(2);    push_int(instr); -  }else{ +  break; +  }    lvalue_to_svalue_no_free(sp, sp-2); sp++;    assign_svalue_no_free(sp,sp-1); sp++;    push_int(1);    o_subtract();    assign_lvalue(sp-4, sp-1);    assign_svalue(sp-4, sp-2);    pop_n_elems(3); -  } +     break;    }       CASE(F_ASSIGN);    assign_lvalue(sp-3,sp-1);    free_svalue(sp-3);    free_svalue(sp-2);    sp[-3]=sp[-1];    sp-=2;    break;
pike.git/src/interpreter.h:964:    constants[GET_ARG()].sval.u.array,sp-1);    pc=(unsigned char *)DO_ALIGN(pc,sizeof(INT32));    pc+=(tmp>=0 ? 1+tmp*2 : 2*~tmp) * sizeof(INT32);    if(*(INT32*)pc < 0) fast_check_threads_etc(7);    pc+=*(INT32*)pc;    pop_stack();    break;    }       /* FIXME: Does this need bignum tests? */ -  LOOP(F_INC_LOOP, ++, <, f_add(2), is_lt); -  LOOP(F_DEC_LOOP, --, >, o_subtract(), is_gt); -  LOOP(F_INC_NEQ_LOOP, ++, !=, f_add(2), !is_eq); -  LOOP(F_DEC_NEQ_LOOP, --, !=, o_subtract(), !is_eq); +  LOOP(F_INC_LOOP, 1, <, is_lt); +  LOOP(F_DEC_LOOP, -1, >, is_gt); +  LOOP(F_INC_NEQ_LOOP, 1, !=, !is_eq); +  LOOP(F_DEC_NEQ_LOOP, -1, !=, !is_eq);       CASE(F_FOREACH) /* array, lvalue, X, i */    {    if(sp[-4].type != T_ARRAY)    PIKE_ERROR("foreach", "Bad argument 1.\n", sp-3, 1);    if(sp[-1].u.integer < sp[-4].u.array->size)    {    fast_check_threads_etc(10);    index_no_free(sp,sp-4,sp-1);    sp++;