diff --git a/vm/bignum.cpp b/vm/bignum.cpp old mode 100644 new mode 100755 index c487186da0..a3c3e73ca1 --- a/vm/bignum.cpp +++ b/vm/bignum.cpp @@ -61,8 +61,7 @@ namespace factor /* Exports */ -int -bignum_equal_p(bignum * x, bignum * y) +int factorvm::bignum_equal_p(bignum * x, bignum * y) { return ((BIGNUM_ZERO_P (x)) @@ -74,8 +73,12 @@ bignum_equal_p(bignum * x, bignum * y) && (bignum_equal_p_unsigned (x, y)))); } -enum bignum_comparison -bignum_compare(bignum * x, bignum * y) +int bignum_equal_p(bignum * x, bignum * y) +{ + return vm->bignum_equal_p(x,y); +} + +enum bignum_comparison factorvm::bignum_compare(bignum * x, bignum * y) { return ((BIGNUM_ZERO_P (x)) @@ -97,9 +100,13 @@ bignum_compare(bignum * x, bignum * y) : (bignum_compare_unsigned (x, y)))); } +enum bignum_comparison bignum_compare(bignum * x, bignum * y) +{ + return vm->bignum_compare(x,y); +} + /* allocates memory */ -bignum * -bignum_add(bignum * x, bignum * y) +bignum *factorvm::bignum_add(bignum * x, bignum * y) { return ((BIGNUM_ZERO_P (x)) @@ -115,9 +122,13 @@ bignum_add(bignum * x, bignum * y) : (bignum_add_unsigned (x, y, 0))))); } +bignum *bignum_add(bignum * x, bignum * y) +{ + return vm->bignum_add(x,y); +} + /* allocates memory */ -bignum * -bignum_subtract(bignum * x, bignum * y) +bignum *factorvm::bignum_subtract(bignum * x, bignum * y) { return ((BIGNUM_ZERO_P (x)) @@ -135,9 +146,13 @@ bignum_subtract(bignum * x, bignum * y) : (bignum_subtract_unsigned (x, y)))))); } +bignum *bignum_subtract(bignum * x, bignum * y) +{ + return vm->bignum_subtract(x,y); +} + /* allocates memory */ -bignum * -bignum_multiply(bignum * x, bignum * y) +bignum *factorvm::bignum_multiply(bignum * x, bignum * y) { bignum_length_type x_length = (BIGNUM_LENGTH (x)); bignum_length_type y_length = (BIGNUM_LENGTH (y)); @@ -168,6 +183,11 @@ bignum_multiply(bignum * x, bignum * y) return (bignum_multiply_unsigned (x, y, negative_p)); } +bignum *bignum_multiply(bignum * x, bignum * y) +{ + return vm->bignum_multiply(x,y); +} + /* allocates memory */ void bignum_divide(bignum * numerator, bignum * denominator, diff --git a/vm/vm.hpp b/vm/vm.hpp index dd34a211fa..523e1f63e7 100644 --- a/vm/vm.hpp +++ b/vm/vm.hpp @@ -43,7 +43,6 @@ struct factorvm { void fatal_error(const char* msg, cell tagged); void critical_error(const char* msg, cell tagged); void throw_error(cell error, stack_frame *callstack_top); - void not_implemented_error(); bool in_page(cell fault, cell area, cell area_size, int offset); void memory_protection_error(cell addr, stack_frame *native_stack); @@ -57,6 +56,13 @@ struct factorvm { void fp_signal_handler_impl(); void type_error(cell type, cell tagged); void general_error(vm_error_type error, cell arg1, cell arg2, stack_frame *callstack_top); + + // bignum + int bignum_equal_p(bignum * x, bignum * y); + enum bignum_comparison bignum_compare(bignum * x, bignum * y); + bignum *bignum_add(bignum * x, bignum * y); + bignum *bignum_subtract(bignum * x, bignum * y); + bignum *bignum_multiply(bignum * x, bignum * y); // next method here: };