vm: Standardize /* Allocates memory */ comments so you can grep -A1
and see if a function allocates for easier debugging of the gc. A couple of the functions were not yet annotated.db4
							parent
							
								
									3bdb788709
								
							
						
					
					
						commit
						dbfa185eef
					
				
							
								
								
									
										10
									
								
								vm/alien.cpp
								
								
								
								
							
							
						
						
									
										10
									
								
								vm/alien.cpp
								
								
								
								
							|  | @ -27,8 +27,8 @@ char *factor_vm::pinned_alien_offset(cell obj) | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* Allocates memory */ |  | ||||||
| /* make an alien */ | /* make an alien */ | ||||||
|  | /* Allocates memory */ | ||||||
| cell factor_vm::allot_alien(cell delegate_, cell displacement) | cell factor_vm::allot_alien(cell delegate_, cell displacement) | ||||||
| { | { | ||||||
| 	if(displacement == 0) | 	if(displacement == 0) | ||||||
|  | @ -59,8 +59,8 @@ cell factor_vm::allot_alien(void *address) | ||||||
| 	return allot_alien(false_object,(cell)address); | 	return allot_alien(false_object,(cell)address); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* Allocates memory */ |  | ||||||
| /* make an alien pointing at an offset of another alien */ | /* make an alien pointing at an offset of another alien */ | ||||||
|  | /* Allocates memory */ | ||||||
| void factor_vm::primitive_displaced_alien() | void factor_vm::primitive_displaced_alien() | ||||||
| { | { | ||||||
| 	cell alien = ctx->pop(); | 	cell alien = ctx->pop(); | ||||||
|  | @ -79,9 +79,9 @@ void factor_vm::primitive_displaced_alien() | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* Allocates memory (from_unsigned_cell can allocate) */ |  | ||||||
| /* address of an object representing a C pointer. Explicitly throw an error
 | /* address of an object representing a C pointer. Explicitly throw an error
 | ||||||
| if the object is a byte array, as a sanity check. */ | if the object is a byte array, as a sanity check. */ | ||||||
|  | /* Allocates memory (from_unsigned_cell can allocate) */ | ||||||
| void factor_vm::primitive_alien_address() | void factor_vm::primitive_alien_address() | ||||||
| { | { | ||||||
| 	ctx->replace(from_unsigned_cell((cell)pinned_alien_offset(ctx->peek()))); | 	ctx->replace(from_unsigned_cell((cell)pinned_alien_offset(ctx->peek()))); | ||||||
|  | @ -120,8 +120,8 @@ void factor_vm::primitive_dlopen() | ||||||
| 	ctx->push(library.value()); | 	ctx->push(library.value()); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* Allocates memory */ |  | ||||||
| /* look up a symbol in a native library */ | /* look up a symbol in a native library */ | ||||||
|  | /* Allocates memory */ | ||||||
| void factor_vm::primitive_dlsym() | void factor_vm::primitive_dlsym() | ||||||
| { | { | ||||||
| 	data_root<object> library(ctx->pop(),this); | 	data_root<object> library(ctx->pop(),this); | ||||||
|  | @ -143,8 +143,8 @@ void factor_vm::primitive_dlsym() | ||||||
| 		ctx->replace(allot_alien(ffi_dlsym(NULL,sym))); | 		ctx->replace(allot_alien(ffi_dlsym(NULL,sym))); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* Allocates memory */ |  | ||||||
| /* look up a symbol in a native library */ | /* look up a symbol in a native library */ | ||||||
|  | /* Allocates memory */ | ||||||
| void factor_vm::primitive_dlsym_raw() | void factor_vm::primitive_dlsym_raw() | ||||||
| { | { | ||||||
| 	data_root<object> library(ctx->pop(),this); | 	data_root<object> library(ctx->pop(),this); | ||||||
|  |  | ||||||
|  | @ -89,7 +89,7 @@ enum bignum_comparison factor_vm::bignum_compare(bignum * x, bignum * y) | ||||||
| 			: (bignum_compare_unsigned (x, y)))); | 			: (bignum_compare_unsigned (x, y)))); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* allocates memory */ | /* Allocates memory */ | ||||||
| bignum *factor_vm::bignum_add(bignum * x, bignum * y) | bignum *factor_vm::bignum_add(bignum * x, bignum * y) | ||||||
| { | { | ||||||
| 	return | 	return | ||||||
|  | @ -106,7 +106,7 @@ bignum *factor_vm::bignum_add(bignum * x, bignum * y) | ||||||
| 			   : (bignum_add_unsigned (x, y, 0))))); | 			   : (bignum_add_unsigned (x, y, 0))))); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* allocates memory */ | /* Allocates memory */ | ||||||
| bignum *factor_vm::bignum_subtract(bignum * x, bignum * y) | bignum *factor_vm::bignum_subtract(bignum * x, bignum * y) | ||||||
| { | { | ||||||
| 	return | 	return | ||||||
|  | @ -125,7 +125,7 @@ bignum *factor_vm::bignum_subtract(bignum * x, bignum * y) | ||||||
| 				  : (bignum_subtract_unsigned (x, y)))))); | 				  : (bignum_subtract_unsigned (x, y)))))); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* allocates memory */ | /* Allocates memory */ | ||||||
| bignum *factor_vm::bignum_multiply(bignum * x, bignum * y) | bignum *factor_vm::bignum_multiply(bignum * x, bignum * y) | ||||||
| { | { | ||||||
| 	bignum_length_type x_length = (BIGNUM_LENGTH (x)); | 	bignum_length_type x_length = (BIGNUM_LENGTH (x)); | ||||||
|  | @ -157,7 +157,7 @@ bignum *factor_vm::bignum_multiply(bignum * x, bignum * y) | ||||||
| 	return (bignum_multiply_unsigned (x, y, negative_p)); | 	return (bignum_multiply_unsigned (x, y, negative_p)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* allocates memory */ | /* Allocates memory */ | ||||||
| void factor_vm::bignum_divide(bignum * numerator, bignum * denominator, bignum * * quotient, bignum * * remainder) | void factor_vm::bignum_divide(bignum * numerator, bignum * denominator, bignum * * quotient, bignum * * remainder) | ||||||
| { | { | ||||||
| 	if (BIGNUM_ZERO_P (denominator)) | 	if (BIGNUM_ZERO_P (denominator)) | ||||||
|  | @ -228,7 +228,7 @@ void factor_vm::bignum_divide(bignum * numerator, bignum * denominator, bignum * | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* allocates memory */ | /* Allocates memory */ | ||||||
| bignum *factor_vm::bignum_quotient(bignum * numerator, bignum * denominator) | bignum *factor_vm::bignum_quotient(bignum * numerator, bignum * denominator) | ||||||
| { | { | ||||||
| 	if (BIGNUM_ZERO_P (denominator)) | 	if (BIGNUM_ZERO_P (denominator)) | ||||||
|  | @ -280,7 +280,7 @@ bignum *factor_vm::bignum_quotient(bignum * numerator, bignum * denominator) | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* allocates memory */ | /* Allocates memory */ | ||||||
| bignum *factor_vm::bignum_remainder(bignum * numerator, bignum * denominator) | bignum *factor_vm::bignum_remainder(bignum * numerator, bignum * denominator) | ||||||
| { | { | ||||||
| 	if (BIGNUM_ZERO_P (denominator)) | 	if (BIGNUM_ZERO_P (denominator)) | ||||||
|  | @ -324,7 +324,7 @@ bignum *factor_vm::bignum_remainder(bignum * numerator, bignum * denominator) | ||||||
| 		} | 		} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* allocates memory */ | /* Allocates memory */ | ||||||
| /* cell_to_bignum, fixnum_to_bignum, long_long_to_bignum, ulong_long_to_bignum */ | /* cell_to_bignum, fixnum_to_bignum, long_long_to_bignum, ulong_long_to_bignum */ | ||||||
| #define FOO_TO_BIGNUM(name,type,stype,utype)				\ | #define FOO_TO_BIGNUM(name,type,stype,utype)				\ | ||||||
| bignum * factor_vm::name##_to_bignum(type n)				\ | bignum * factor_vm::name##_to_bignum(type n)				\ | ||||||
|  | @ -393,7 +393,7 @@ BIGNUM_TO_FOO(ulong_long,u64,s64,u64) | ||||||
| 
 | 
 | ||||||
| #define inf std::numeric_limits<double>::infinity() | #define inf std::numeric_limits<double>::infinity() | ||||||
| 
 | 
 | ||||||
| /* allocates memory */ | /* Allocates memory */ | ||||||
| bignum *factor_vm::double_to_bignum(double x) | bignum *factor_vm::double_to_bignum(double x) | ||||||
| { | { | ||||||
| 	if (x == inf || x == -inf || x != x) return (BIGNUM_ZERO ()); | 	if (x == inf || x == -inf || x != x) return (BIGNUM_ZERO ()); | ||||||
|  | @ -473,7 +473,7 @@ enum bignum_comparison factor_vm::bignum_compare_unsigned(bignum * x, bignum * y | ||||||
| 
 | 
 | ||||||
| /* Addition */ | /* Addition */ | ||||||
| 
 | 
 | ||||||
| /* allocates memory */ | /* Allocates memory */ | ||||||
| bignum *factor_vm::bignum_add_unsigned(bignum * x, bignum * y, int negative_p) | bignum *factor_vm::bignum_add_unsigned(bignum * x, bignum * y, int negative_p) | ||||||
| { | { | ||||||
| 	GC_BIGNUM(x); GC_BIGNUM(y); | 	GC_BIGNUM(x); GC_BIGNUM(y); | ||||||
|  | @ -540,7 +540,7 @@ bignum *factor_vm::bignum_add_unsigned(bignum * x, bignum * y, int negative_p) | ||||||
| 
 | 
 | ||||||
| /* Subtraction */ | /* Subtraction */ | ||||||
| 
 | 
 | ||||||
| /* allocates memory */ | /* Allocates memory */ | ||||||
| bignum *factor_vm::bignum_subtract_unsigned(bignum * x, bignum * y) | bignum *factor_vm::bignum_subtract_unsigned(bignum * x, bignum * y) | ||||||
| { | { | ||||||
| 	GC_BIGNUM(x); GC_BIGNUM(y); | 	GC_BIGNUM(x); GC_BIGNUM(y); | ||||||
|  | @ -618,7 +618,7 @@ bignum *factor_vm::bignum_subtract_unsigned(bignum * x, bignum * y) | ||||||
|    Maximum value for carry: ((R * (R - 1)) + (R - 1)) |    Maximum value for carry: ((R * (R - 1)) + (R - 1)) | ||||||
|    where R == BIGNUM_RADIX_ROOT */ |    where R == BIGNUM_RADIX_ROOT */ | ||||||
| 
 | 
 | ||||||
| /* allocates memory */ | /* Allocates memory */ | ||||||
| bignum *factor_vm::bignum_multiply_unsigned(bignum * x, bignum * y, int negative_p) | bignum *factor_vm::bignum_multiply_unsigned(bignum * x, bignum * y, int negative_p) | ||||||
| { | { | ||||||
| 	GC_BIGNUM(x); GC_BIGNUM(y); | 	GC_BIGNUM(x); GC_BIGNUM(y); | ||||||
|  | @ -689,7 +689,7 @@ bignum *factor_vm::bignum_multiply_unsigned(bignum * x, bignum * y, int negative | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* allocates memory */ | /* Allocates memory */ | ||||||
| bignum *factor_vm::bignum_multiply_unsigned_small_factor(bignum * x, bignum_digit_type y, int negative_p) | bignum *factor_vm::bignum_multiply_unsigned_small_factor(bignum * x, bignum_digit_type y, int negative_p) | ||||||
| { | { | ||||||
| 	GC_BIGNUM(x); | 	GC_BIGNUM(x); | ||||||
|  | @ -763,7 +763,7 @@ void factor_vm::bignum_destructive_scale_up(bignum * bignum, bignum_digit_type f | ||||||
|    volume 2, "Seminumerical Algorithms" |    volume 2, "Seminumerical Algorithms" | ||||||
|    section 4.3.1, "Multiple-Precision Arithmetic". */ |    section 4.3.1, "Multiple-Precision Arithmetic". */ | ||||||
| 
 | 
 | ||||||
| /* allocates memory */ | /* Allocates memory */ | ||||||
| void factor_vm::bignum_divide_unsigned_large_denominator(bignum * numerator, bignum * denominator, bignum * * quotient, bignum * * remainder, int q_negative_p, int r_negative_p) | void factor_vm::bignum_divide_unsigned_large_denominator(bignum * numerator, bignum * denominator, bignum * * quotient, bignum * * remainder, int q_negative_p, int r_negative_p) | ||||||
| { | { | ||||||
| 	GC_BIGNUM(numerator); GC_BIGNUM(denominator); | 	GC_BIGNUM(numerator); GC_BIGNUM(denominator); | ||||||
|  | @ -970,7 +970,7 @@ bignum_digit_type factor_vm::bignum_divide_subtract(bignum_digit_type * v_start, | ||||||
| 	return (guess - 1); | 	return (guess - 1); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* allocates memory */ | /* Allocates memory */ | ||||||
| void factor_vm::bignum_divide_unsigned_medium_denominator(bignum * numerator,bignum_digit_type denominator, bignum * * quotient, bignum * * remainder,int q_negative_p, int r_negative_p) | void factor_vm::bignum_divide_unsigned_medium_denominator(bignum * numerator,bignum_digit_type denominator, bignum * * quotient, bignum * * remainder,int q_negative_p, int r_negative_p) | ||||||
| { | { | ||||||
| 	GC_BIGNUM(numerator); | 	GC_BIGNUM(numerator); | ||||||
|  | @ -1200,7 +1200,7 @@ bignum_digit_type factor_vm::bignum_digit_divide_subtract(bignum_digit_type v1, | ||||||
| #undef BDDS_MULSUB | #undef BDDS_MULSUB | ||||||
| #undef BDDS_ADD | #undef BDDS_ADD | ||||||
| 
 | 
 | ||||||
| /* allocates memory */ | /* Allocates memory */ | ||||||
| void factor_vm::bignum_divide_unsigned_small_denominator(bignum * numerator, bignum_digit_type denominator, bignum * * quotient, bignum * * remainder,int q_negative_p, int r_negative_p) | void factor_vm::bignum_divide_unsigned_small_denominator(bignum * numerator, bignum_digit_type denominator, bignum * * quotient, bignum * * remainder,int q_negative_p, int r_negative_p) | ||||||
| { | { | ||||||
| 	GC_BIGNUM(numerator); | 	GC_BIGNUM(numerator); | ||||||
|  | @ -1246,7 +1246,7 @@ bignum_digit_type factor_vm::bignum_destructive_scale_down(bignum * bignum, bign | ||||||
| #undef quotient_high | #undef quotient_high | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* allocates memory */ | /* Allocates memory */ | ||||||
| bignum * factor_vm::bignum_remainder_unsigned_small_denominator(bignum * n, bignum_digit_type d, int negative_p) | bignum * factor_vm::bignum_remainder_unsigned_small_denominator(bignum * n, bignum_digit_type d, int negative_p) | ||||||
| { | { | ||||||
| 	bignum_digit_type two_digits; | 	bignum_digit_type two_digits; | ||||||
|  | @ -1265,7 +1265,7 @@ bignum * factor_vm::bignum_remainder_unsigned_small_denominator(bignum * n, bign | ||||||
| 	return (bignum_digit_to_bignum (r, negative_p)); | 	return (bignum_digit_to_bignum (r, negative_p)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* allocates memory */ | /* Allocates memory */ | ||||||
| bignum *factor_vm::bignum_digit_to_bignum(bignum_digit_type digit, int negative_p) | bignum *factor_vm::bignum_digit_to_bignum(bignum_digit_type digit, int negative_p) | ||||||
| { | { | ||||||
| 	if (digit == 0) | 	if (digit == 0) | ||||||
|  | @ -1278,7 +1278,7 @@ bignum *factor_vm::bignum_digit_to_bignum(bignum_digit_type digit, int negative_ | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* allocates memory */ | /* Allocates memory */ | ||||||
| bignum *factor_vm::allot_bignum(bignum_length_type length, int negative_p) | bignum *factor_vm::allot_bignum(bignum_length_type length, int negative_p) | ||||||
| { | { | ||||||
| 	BIGNUM_ASSERT ((length >= 0) || (length < BIGNUM_RADIX)); | 	BIGNUM_ASSERT ((length >= 0) || (length < BIGNUM_RADIX)); | ||||||
|  | @ -1287,7 +1287,7 @@ bignum *factor_vm::allot_bignum(bignum_length_type length, int negative_p) | ||||||
| 	return (result); | 	return (result); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* allocates memory */ | /* Allocates memory */ | ||||||
| bignum * factor_vm::allot_bignum_zeroed(bignum_length_type length, int negative_p) | bignum * factor_vm::allot_bignum_zeroed(bignum_length_type length, int negative_p) | ||||||
| { | { | ||||||
| 	bignum * result = allot_bignum(length,negative_p); | 	bignum * result = allot_bignum(length,negative_p); | ||||||
|  | @ -1302,7 +1302,7 @@ bignum * factor_vm::allot_bignum_zeroed(bignum_length_type length, int negative_ | ||||||
| #define BIGNUM_REDUCE_LENGTH(source, length)	\ | #define BIGNUM_REDUCE_LENGTH(source, length)	\ | ||||||
| source = reallot_array(source,length + 1) | source = reallot_array(source,length + 1) | ||||||
| 
 | 
 | ||||||
| /* allocates memory */ | /* Allocates memory */ | ||||||
| bignum *factor_vm::bignum_shorten_length(bignum * bignum, bignum_length_type length) | bignum *factor_vm::bignum_shorten_length(bignum * bignum, bignum_length_type length) | ||||||
| { | { | ||||||
| 	bignum_length_type current_length = (BIGNUM_LENGTH (bignum)); | 	bignum_length_type current_length = (BIGNUM_LENGTH (bignum)); | ||||||
|  | @ -1316,7 +1316,7 @@ bignum *factor_vm::bignum_shorten_length(bignum * bignum, bignum_length_type len | ||||||
| 	return (bignum); | 	return (bignum); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* allocates memory */ | /* Allocates memory */ | ||||||
| bignum *factor_vm::bignum_trim(bignum * bignum) | bignum *factor_vm::bignum_trim(bignum * bignum) | ||||||
| { | { | ||||||
| 	bignum_digit_type * start = (BIGNUM_START_PTR (bignum)); | 	bignum_digit_type * start = (BIGNUM_START_PTR (bignum)); | ||||||
|  | @ -1337,7 +1337,7 @@ bignum *factor_vm::bignum_trim(bignum * bignum) | ||||||
| 
 | 
 | ||||||
| /* Copying */ | /* Copying */ | ||||||
| 
 | 
 | ||||||
| /* allocates memory */ | /* Allocates memory */ | ||||||
| bignum *factor_vm::bignum_new_sign(bignum * x, int negative_p) | bignum *factor_vm::bignum_new_sign(bignum * x, int negative_p) | ||||||
| { | { | ||||||
| 	GC_BIGNUM(x); | 	GC_BIGNUM(x); | ||||||
|  | @ -1347,7 +1347,7 @@ bignum *factor_vm::bignum_new_sign(bignum * x, int negative_p) | ||||||
| 	return (result); | 	return (result); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* allocates memory */ | /* Allocates memory */ | ||||||
| bignum *factor_vm::bignum_maybe_new_sign(bignum * x, int negative_p) | bignum *factor_vm::bignum_maybe_new_sign(bignum * x, int negative_p) | ||||||
| { | { | ||||||
| 	if ((BIGNUM_NEGATIVE_P (x)) ? negative_p : (! negative_p)) | 	if ((BIGNUM_NEGATIVE_P (x)) ? negative_p : (! negative_p)) | ||||||
|  | @ -1377,7 +1377,7 @@ void factor_vm::bignum_destructive_copy(bignum * source, bignum * target) | ||||||
|  * Added bitwise operations (and oddp). |  * Added bitwise operations (and oddp). | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| /* allocates memory */ | /* Allocates memory */ | ||||||
| bignum *factor_vm::bignum_bitwise_not(bignum * x) | bignum *factor_vm::bignum_bitwise_not(bignum * x) | ||||||
| { | { | ||||||
| 	GC_BIGNUM (x); | 	GC_BIGNUM (x); | ||||||
|  | @ -1435,7 +1435,7 @@ bignum *factor_vm::bignum_bitwise_not(bignum * x) | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* allocates memory */ | /* Allocates memory */ | ||||||
| bignum *factor_vm::bignum_arithmetic_shift(bignum * arg1, fixnum n) | bignum *factor_vm::bignum_arithmetic_shift(bignum * arg1, fixnum n) | ||||||
| { | { | ||||||
| 	if (BIGNUM_NEGATIVE_P(arg1) && n < 0) | 	if (BIGNUM_NEGATIVE_P(arg1) && n < 0) | ||||||
|  | @ -1448,7 +1448,7 @@ bignum *factor_vm::bignum_arithmetic_shift(bignum * arg1, fixnum n) | ||||||
| #define IOR_OP 1 | #define IOR_OP 1 | ||||||
| #define XOR_OP 2 | #define XOR_OP 2 | ||||||
| 
 | 
 | ||||||
| /* allocates memory */ | /* Allocates memory */ | ||||||
| bignum *factor_vm::bignum_bitwise_and(bignum * arg1, bignum * arg2) | bignum *factor_vm::bignum_bitwise_and(bignum * arg1, bignum * arg2) | ||||||
| { | { | ||||||
| 	return( | 	return( | ||||||
|  | @ -1462,7 +1462,7 @@ bignum *factor_vm::bignum_bitwise_and(bignum * arg1, bignum * arg2) | ||||||
| 		   ); | 		   ); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* allocates memory */ | /* Allocates memory */ | ||||||
| bignum *factor_vm::bignum_bitwise_ior(bignum * arg1, bignum * arg2) | bignum *factor_vm::bignum_bitwise_ior(bignum * arg1, bignum * arg2) | ||||||
| { | { | ||||||
| 	return( | 	return( | ||||||
|  | @ -1476,7 +1476,7 @@ bignum *factor_vm::bignum_bitwise_ior(bignum * arg1, bignum * arg2) | ||||||
| 		   ); | 		   ); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* allocates memory */ | /* Allocates memory */ | ||||||
| bignum *factor_vm::bignum_bitwise_xor(bignum * arg1, bignum * arg2) | bignum *factor_vm::bignum_bitwise_xor(bignum * arg1, bignum * arg2) | ||||||
| { | { | ||||||
| 	return( | 	return( | ||||||
|  | @ -1490,7 +1490,7 @@ bignum *factor_vm::bignum_bitwise_xor(bignum * arg1, bignum * arg2) | ||||||
| 		   ); | 		   ); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* allocates memory */ | /* Allocates memory */ | ||||||
| /* ash for the magnitude */ | /* ash for the magnitude */ | ||||||
| /* assume arg1 is a big number, n is a long */ | /* assume arg1 is a big number, n is a long */ | ||||||
| bignum *factor_vm::bignum_magnitude_ash(bignum * arg1, fixnum n) | bignum *factor_vm::bignum_magnitude_ash(bignum * arg1, fixnum n) | ||||||
|  | @ -1553,7 +1553,7 @@ bignum *factor_vm::bignum_magnitude_ash(bignum * arg1, fixnum n) | ||||||
| 	return (bignum_trim (result)); | 	return (bignum_trim (result)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* allocates memory */ | /* Allocates memory */ | ||||||
| bignum *factor_vm::bignum_pospos_bitwise_op(int op, bignum * arg1, bignum * arg2) | bignum *factor_vm::bignum_pospos_bitwise_op(int op, bignum * arg1, bignum * arg2) | ||||||
| { | { | ||||||
| 	GC_BIGNUM(arg1); GC_BIGNUM(arg2); | 	GC_BIGNUM(arg1); GC_BIGNUM(arg2); | ||||||
|  | @ -1587,7 +1587,7 @@ bignum *factor_vm::bignum_pospos_bitwise_op(int op, bignum * arg1, bignum * arg2 | ||||||
| 	return bignum_trim(result); | 	return bignum_trim(result); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* allocates memory */ | /* Allocates memory */ | ||||||
| bignum *factor_vm::bignum_posneg_bitwise_op(int op, bignum * arg1, bignum * arg2) | bignum *factor_vm::bignum_posneg_bitwise_op(int op, bignum * arg1, bignum * arg2) | ||||||
| { | { | ||||||
| 	GC_BIGNUM(arg1); GC_BIGNUM(arg2); | 	GC_BIGNUM(arg1); GC_BIGNUM(arg2); | ||||||
|  | @ -1639,7 +1639,7 @@ bignum *factor_vm::bignum_posneg_bitwise_op(int op, bignum * arg1, bignum * arg2 | ||||||
| 	return bignum_trim(result); | 	return bignum_trim(result); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* allocates memory */ | /* Allocates memory */ | ||||||
| bignum *factor_vm::bignum_negneg_bitwise_op(int op, bignum * arg1, bignum * arg2) | bignum *factor_vm::bignum_negneg_bitwise_op(int op, bignum * arg1, bignum * arg2) | ||||||
| { | { | ||||||
| 	GC_BIGNUM(arg1); GC_BIGNUM(arg2); | 	GC_BIGNUM(arg1); GC_BIGNUM(arg2); | ||||||
|  |  | ||||||
|  | @ -290,11 +290,11 @@ void factor_vm::primitive_compact_gc() | ||||||
| 		true /* trace contexts? */); | 		true /* trace contexts? */); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* Allocates memory */ |  | ||||||
| /*
 | /*
 | ||||||
|  * It is up to the caller to fill in the object's fields in a meaningful |  * It is up to the caller to fill in the object's fields in a meaningful | ||||||
|  * fashion! |  * fashion! | ||||||
|  */ |  */ | ||||||
|  | /* Allocates memory */ | ||||||
| object *factor_vm::allot_large_object(cell type, cell size) | object *factor_vm::allot_large_object(cell type, cell size) | ||||||
| { | { | ||||||
| 	/* If tenured space does not have enough room, collect and compact */ | 	/* If tenured space does not have enough room, collect and compact */ | ||||||
|  |  | ||||||
							
								
								
									
										10
									
								
								vm/math.cpp
								
								
								
								
							
							
						
						
									
										10
									
								
								vm/math.cpp
								
								
								
								
							|  | @ -228,7 +228,7 @@ void factor_vm::primitive_bignum_log2() | ||||||
| 	ctx->replace(tag<bignum>(bignum_integer_length(untag<bignum>(ctx->peek())))); | 	ctx->replace(tag<bignum>(bignum_integer_length(untag<bignum>(ctx->peek())))); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* allocates memory */ | /* Allocates memory */ | ||||||
| cell factor_vm::unbox_array_size_slow() | cell factor_vm::unbox_array_size_slow() | ||||||
| { | { | ||||||
| 	if(tagged<object>(ctx->peek()).type() == BIGNUM_TYPE) | 	if(tagged<object>(ctx->peek()).type() == BIGNUM_TYPE) | ||||||
|  | @ -249,11 +249,13 @@ cell factor_vm::unbox_array_size_slow() | ||||||
| 	return 0; /* can't happen */ | 	return 0; /* can't happen */ | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | /* Allocates memory */ | ||||||
| void factor_vm::primitive_fixnum_to_float() | void factor_vm::primitive_fixnum_to_float() | ||||||
| { | { | ||||||
| 	ctx->replace(allot_float(fixnum_to_float(ctx->peek()))); | 	ctx->replace(allot_float(fixnum_to_float(ctx->peek()))); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | /* Allocates memory */ | ||||||
| void factor_vm::primitive_format_float() | void factor_vm::primitive_format_float() | ||||||
| { | { | ||||||
| 	byte_array *array = allot_byte_array(100); | 	byte_array *array = allot_byte_array(100); | ||||||
|  | @ -273,24 +275,28 @@ void factor_vm::primitive_float_eq() | ||||||
| 	ctx->replace(tag_boolean(x == y)); | 	ctx->replace(tag_boolean(x == y)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | /* Allocates memory */ | ||||||
| void factor_vm::primitive_float_add() | void factor_vm::primitive_float_add() | ||||||
| { | { | ||||||
| 	POP_FLOATS(x,y); | 	POP_FLOATS(x,y); | ||||||
| 	ctx->replace(allot_float(x + y)); | 	ctx->replace(allot_float(x + y)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | /* Allocates memory */ | ||||||
| void factor_vm::primitive_float_subtract() | void factor_vm::primitive_float_subtract() | ||||||
| { | { | ||||||
| 	POP_FLOATS(x,y); | 	POP_FLOATS(x,y); | ||||||
| 	ctx->replace(allot_float(x - y)); | 	ctx->replace(allot_float(x - y)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | /* Allocates memory */ | ||||||
| void factor_vm::primitive_float_multiply() | void factor_vm::primitive_float_multiply() | ||||||
| { | { | ||||||
| 	POP_FLOATS(x,y); | 	POP_FLOATS(x,y); | ||||||
| 	ctx->replace(allot_float(x * y)); | 	ctx->replace(allot_float(x * y)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | /* Allocates memory */ | ||||||
| void factor_vm::primitive_float_divfloat() | void factor_vm::primitive_float_divfloat() | ||||||
| { | { | ||||||
| 	POP_FLOATS(x,y); | 	POP_FLOATS(x,y); | ||||||
|  | @ -338,6 +344,7 @@ void factor_vm::primitive_double_bits() | ||||||
| 	ctx->push(from_unsigned_8(double_bits(untag_float_check(ctx->pop())))); | 	ctx->push(from_unsigned_8(double_bits(untag_float_check(ctx->pop())))); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | /* Allocates memory */ | ||||||
| void factor_vm::primitive_bits_double() | void factor_vm::primitive_bits_double() | ||||||
| { | { | ||||||
| 	ctx->push(allot_float(bits_double(to_unsigned_8(ctx->pop())))); | 	ctx->push(allot_float(bits_double(to_unsigned_8(ctx->pop())))); | ||||||
|  | @ -419,6 +426,7 @@ VM_C_API s64 to_signed_8(cell obj, factor_vm *parent) | ||||||
| 	return parent->to_signed_8(obj); | 	return parent->to_signed_8(obj); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | /* Allocates memory */ | ||||||
| cell factor_vm::from_unsigned_8(u64 n) | cell factor_vm::from_unsigned_8(u64 n) | ||||||
| { | { | ||||||
| 	if(n > (u64)fixnum_max) | 	if(n > (u64)fixnum_max) | ||||||
|  |  | ||||||
|  | @ -63,8 +63,8 @@ word *factor_vm::allot_word(cell name_, cell vocab_, cell hashcode_) | ||||||
| 	return new_word.untagged(); | 	return new_word.untagged(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* Allocates memory */ |  | ||||||
| /* (word) ( name vocabulary hashcode -- word ) */ | /* (word) ( name vocabulary hashcode -- word ) */ | ||||||
|  | /* Allocates memory */ | ||||||
| void factor_vm::primitive_word() | void factor_vm::primitive_word() | ||||||
| { | { | ||||||
| 	cell hashcode = ctx->pop(); | 	cell hashcode = ctx->pop(); | ||||||
|  | @ -73,8 +73,8 @@ void factor_vm::primitive_word() | ||||||
| 	ctx->push(tag<word>(allot_word(name,vocab,hashcode))); | 	ctx->push(tag<word>(allot_word(name,vocab,hashcode))); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* Allocates memory (from_unsigned_cell allocates) */ |  | ||||||
| /* word-code ( word -- start end ) */ | /* word-code ( word -- start end ) */ | ||||||
|  | /* Allocates memory (from_unsigned_cell allocates) */ | ||||||
| void factor_vm::primitive_word_code() | void factor_vm::primitive_word_code() | ||||||
| { | { | ||||||
| 	data_root<word> w(ctx->pop(),this); | 	data_root<word> w(ctx->pop(),this); | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue