Added vm ptr to math overflow functions

db4
Phil Dawes 2009-09-04 19:24:30 +01:00
parent b02944c6d5
commit 67ac514a3b
2 changed files with 9 additions and 9 deletions

View File

@ -836,29 +836,29 @@ VM_C_API double to_double(cell value,factorvm *myvm)
/* The fixnum+, fixnum- and fixnum* primitives are defined in cpu_*.S. On
overflow, they call these functions. */
void factorvm::overflow_fixnum_add(fixnum x, fixnum y)
inline void factorvm::overflow_fixnum_add(fixnum x, fixnum y)
{
drepl(tag<bignum>(fixnum_to_bignum(
untag_fixnum(x) + untag_fixnum(y))));
}
VM_ASM_API void overflow_fixnum_add(fixnum x, fixnum y)
VM_ASM_API void overflow_fixnum_add(fixnum x, fixnum y, factorvm *myvm)
{
return PRIMITIVE_OVERFLOW_GETVM()->overflow_fixnum_add(x,y);
}
void factorvm::overflow_fixnum_subtract(fixnum x, fixnum y)
inline void factorvm::overflow_fixnum_subtract(fixnum x, fixnum y)
{
drepl(tag<bignum>(fixnum_to_bignum(
untag_fixnum(x) - untag_fixnum(y))));
}
VM_ASM_API void overflow_fixnum_subtract(fixnum x, fixnum y)
VM_ASM_API void overflow_fixnum_subtract(fixnum x, fixnum y, factorvm *myvm)
{
return PRIMITIVE_OVERFLOW_GETVM()->overflow_fixnum_subtract(x,y);
}
void factorvm::overflow_fixnum_multiply(fixnum x, fixnum y)
inline void factorvm::overflow_fixnum_multiply(fixnum x, fixnum y)
{
bignum *bx = fixnum_to_bignum(x);
GC_BIGNUM(bx,this);
@ -867,7 +867,7 @@ void factorvm::overflow_fixnum_multiply(fixnum x, fixnum y)
drepl(tag<bignum>(bignum_multiply(bx,by)));
}
VM_ASM_API void overflow_fixnum_multiply(fixnum x, fixnum y)
VM_ASM_API void overflow_fixnum_multiply(fixnum x, fixnum y, factorvm *myvm)
{
return PRIMITIVE_OVERFLOW_GETVM()->overflow_fixnum_multiply(x,y);
}

View File

@ -83,8 +83,8 @@ VM_C_API u64 to_unsigned_8(cell obj, factorvm *vm);
VM_C_API fixnum to_fixnum(cell tagged, factorvm *vm);
VM_C_API cell to_cell(cell tagged, factorvm *vm);
VM_ASM_API void overflow_fixnum_add(fixnum x, fixnum y);
VM_ASM_API void overflow_fixnum_subtract(fixnum x, fixnum y);
VM_ASM_API void overflow_fixnum_multiply(fixnum x, fixnum y);
VM_ASM_API void overflow_fixnum_add(fixnum x, fixnum y, factorvm *vm);
VM_ASM_API void overflow_fixnum_subtract(fixnum x, fixnum y, factorvm *vm);
VM_ASM_API void overflow_fixnum_multiply(fixnum x, fixnum y, factorvm *vm);
}