Added vm ptr to math overflow functions
parent
b02944c6d5
commit
67ac514a3b
12
vm/math.cpp
12
vm/math.cpp
|
@ -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
|
/* The fixnum+, fixnum- and fixnum* primitives are defined in cpu_*.S. On
|
||||||
overflow, they call these functions. */
|
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(
|
drepl(tag<bignum>(fixnum_to_bignum(
|
||||||
untag_fixnum(x) + untag_fixnum(y))));
|
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);
|
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(
|
drepl(tag<bignum>(fixnum_to_bignum(
|
||||||
untag_fixnum(x) - untag_fixnum(y))));
|
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);
|
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);
|
bignum *bx = fixnum_to_bignum(x);
|
||||||
GC_BIGNUM(bx,this);
|
GC_BIGNUM(bx,this);
|
||||||
|
@ -867,7 +867,7 @@ void factorvm::overflow_fixnum_multiply(fixnum x, fixnum y)
|
||||||
drepl(tag<bignum>(bignum_multiply(bx,by)));
|
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);
|
return PRIMITIVE_OVERFLOW_GETVM()->overflow_fixnum_multiply(x,y);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 fixnum to_fixnum(cell tagged, factorvm *vm);
|
||||||
VM_C_API cell to_cell(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_add(fixnum x, fixnum y, factorvm *vm);
|
||||||
VM_ASM_API void overflow_fixnum_subtract(fixnum x, fixnum y);
|
VM_ASM_API void overflow_fixnum_subtract(fixnum x, fixnum y, factorvm *vm);
|
||||||
VM_ASM_API void overflow_fixnum_multiply(fixnum x, fixnum y);
|
VM_ASM_API void overflow_fixnum_multiply(fixnum x, fixnum y, factorvm *vm);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue