pike.git / src / bignum.c

version» Context lines:

pike.git/src/bignum.c:111:   void convert_svalue_to_bignum(struct svalue *s)   {    push_svalue(s);    convert_stack_top_to_bignum();    free_svalue(s);    *s=sp[-1];    sp--;    dmalloc_touch_svalue(sp);   }    + #ifdef INT64 + /* These routines can be made much more optimized. */ +    #define BIGNUM_INT64_MASK 0xffff   #define BIGNUM_INT64_SHIFT 16    - #ifdef INT64 +    void push_int64(INT64 i)   {    if(i == (INT_TYPE)i)    {    push_int((INT_TYPE)i);    }    else    {    int neg, pos, lshfun, orfun;   
pike.git/src/bignum.c:151: Inside #if defined(INT64)
   convert_stack_top_to_bignum();       push_int(pos);    apply_low(sp[-2].u.object, lshfun, 1);    stack_swap();    pop_stack();       apply_low(sp[-2].u.object, orfun, 1);    stack_swap();    pop_stack(); +  +  if(sp[-1].type == T_INT) +  convert_stack_top_to_bignum();    }       if(neg)    apply_low(sp[-1].u.object,FIND_LFUN(sp[-1].u.object->prog,LFUN_COMPL),0);    }   }      int int64_from_bignum(INT64 *i, struct object *bignum)   {    int neg, pos, rshfun, andfun;