pike.git / src / interpreter.h

version» Context lines:

pike.git/src/interpreter.h:429:    CASE(F_CLEAR_LOCAL);    instr=GET_ARG();    free_svalue(fp->locals + instr);    fp->locals[instr].type=T_INT;    fp->locals[instr].subtype=0;    fp->locals[instr].u.integer=0;    break;       CASE(F_INC_LOCAL);    instr=GET_ARG(); + #ifdef AUTO_BIGNUM +  if(fp->locals[instr].type == T_INT && +  !INT_TYPE_ADD_OVERFLOW(fp->locals[instr].u.integer, 1)) + #else    if(fp->locals[instr].type == T_INT) -  + #endif /* AUTO_BIGNUM */    {    fp->locals[instr].u.integer++;    assign_svalue_no_free(sp++,fp->locals+instr); -  }else{ +  } +  else +  {    assign_svalue_no_free(sp++,fp->locals+instr);    push_int(1);    f_add(2);    assign_svalue(fp->locals+instr,sp-1);    }    break;       CASE(F_POST_INC_LOCAL);    instr=GET_ARG();    assign_svalue_no_free(sp++,fp->locals+instr);    goto inc_local_and_pop;       CASE(F_INC_LOCAL_AND_POP);    instr=GET_ARG();    inc_local_and_pop: -  + #ifdef AUTO_BIGNUM +  if(fp->locals[instr].type == T_INT && +  !INT_TYPE_ADD_OVERFLOW(fp->locals[instr].u.integer, 1)) + #else    if(fp->locals[instr].type == T_INT) -  + #endif /* AUTO_BIGNUM */    {    fp->locals[instr].u.integer++;    }else{    assign_svalue_no_free(sp++,fp->locals+instr);    push_int(1);    f_add(2);    assign_svalue(fp->locals+instr,sp-1);    pop_stack();    }    break;       CASE(F_DEC_LOCAL);    instr=GET_ARG(); -  + #ifdef AUTO_BIGNUM +  if(fp->locals[instr].type == T_INT && +  !INT_TYPE_SUB_OVERFLOW(fp->locals[instr].u.integer, 1)) + #else    if(fp->locals[instr].type == T_INT) -  + #endif /* AUTO_BIGNUM */    {    fp->locals[instr].u.integer--;    assign_svalue_no_free(sp++,fp->locals+instr);    }else{    assign_svalue_no_free(sp++,fp->locals+instr);    push_int(1);    o_subtract();    assign_svalue(fp->locals+instr,sp-1);    }    break;
pike.git/src/interpreter.h:485:    CASE(F_POST_DEC_LOCAL);    instr=GET_ARG();    assign_svalue_no_free(sp++,fp->locals+instr);    goto dec_local_and_pop;    /* fp->locals[instr].u.integer--; */    break;       CASE(F_DEC_LOCAL_AND_POP);    instr=GET_ARG();    dec_local_and_pop: + #ifdef AUTO_BIGNUM +  if(fp->locals[instr].type == T_INT && +  !INT_TYPE_SUB_OVERFLOW(fp->locals[instr].u.integer, 1)) + #else    if(fp->locals[instr].type == T_INT) -  + #endif /* AUTO_BIGNUM */    {    fp->locals[instr].u.integer--;    }else{    assign_svalue_no_free(sp++,fp->locals+instr);    push_int(1);    o_subtract();    assign_svalue(fp->locals+instr,sp-1);    pop_stack();    }    break;
pike.git/src/interpreter.h:582:    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)    { +  /* FIXME: Bignum. */    instr=++ u->integer;    pop_n_elems(2);    push_int(u->integer);    }else{    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)    { -  +  /* FIXME: Bignum. */    instr=-- u->integer;    pop_n_elems(2);    push_int(u->integer);    }else{    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;    pop_n_elems(2);    }else{    lvalue_to_svalue_no_free(sp, sp-2); sp++;    push_int(1);    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)    { -  +  /* FIXME: Bignum. */    instr=++ u->integer;    pop_n_elems(2);    }else{    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)    { -  +  /* FIXME: Bignum. */    instr=u->integer ++;    pop_n_elems(2);    push_int(instr);    }else{    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)    { -  +  /* FIXME: Bignum. */    instr=u->integer --;    pop_n_elems(2);    push_int(instr);    }else{    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);
pike.git/src/interpreter.h:1035:   #endif       /* fall through */       CASE(F_DUMB_RETURN);    return -1;       CASE(F_NEGATE);    if(sp[-1].type == T_INT)    { + #ifdef AUTO_BIGNUM +  if(INT_TYPE_NEG_OVERFLOW(sp[-1].u.integer)) +  { +  convert_stack_top_to_bignum(); +  o_negate(); +  } +  else + #endif /* AUTO_BIGNUM */    sp[-1].u.integer =- sp[-1].u.integer; -  }else if(sp[-1].type == T_FLOAT) +  } +  else if(sp[-1].type == T_FLOAT)    {    sp[-1].u.float_number =- sp[-1].u.float_number;    }else{    o_negate();    }    break;       CASE(F_COMPL); o_compl(); break;       CASE(F_NOT);