Do not lower primitives to "void*" to get better compiler checking

db4
Samuel Tardieu 2009-05-04 14:32:09 +02:00
parent 034dcc9c3b
commit 1b0db9623b
2 changed files with 153 additions and 152 deletions

View File

@ -3,157 +3,157 @@
namespace factor namespace factor
{ {
void *primitives[] = { primitive_type primitives[] = {
(void *)primitive_bignum_to_fixnum, primitive_bignum_to_fixnum,
(void *)primitive_float_to_fixnum, primitive_float_to_fixnum,
(void *)primitive_fixnum_to_bignum, primitive_fixnum_to_bignum,
(void *)primitive_float_to_bignum, primitive_float_to_bignum,
(void *)primitive_fixnum_to_float, primitive_fixnum_to_float,
(void *)primitive_bignum_to_float, primitive_bignum_to_float,
(void *)primitive_str_to_float, primitive_str_to_float,
(void *)primitive_float_to_str, primitive_float_to_str,
(void *)primitive_float_bits, primitive_float_bits,
(void *)primitive_double_bits, primitive_double_bits,
(void *)primitive_bits_float, primitive_bits_float,
(void *)primitive_bits_double, primitive_bits_double,
(void *)primitive_fixnum_add, primitive_fixnum_add,
(void *)primitive_fixnum_subtract, primitive_fixnum_subtract,
(void *)primitive_fixnum_multiply, primitive_fixnum_multiply,
(void *)primitive_fixnum_divint, primitive_fixnum_divint,
(void *)primitive_fixnum_divmod, primitive_fixnum_divmod,
(void *)primitive_fixnum_shift, primitive_fixnum_shift,
(void *)primitive_bignum_eq, primitive_bignum_eq,
(void *)primitive_bignum_add, primitive_bignum_add,
(void *)primitive_bignum_subtract, primitive_bignum_subtract,
(void *)primitive_bignum_multiply, primitive_bignum_multiply,
(void *)primitive_bignum_divint, primitive_bignum_divint,
(void *)primitive_bignum_mod, primitive_bignum_mod,
(void *)primitive_bignum_divmod, primitive_bignum_divmod,
(void *)primitive_bignum_and, primitive_bignum_and,
(void *)primitive_bignum_or, primitive_bignum_or,
(void *)primitive_bignum_xor, primitive_bignum_xor,
(void *)primitive_bignum_not, primitive_bignum_not,
(void *)primitive_bignum_shift, primitive_bignum_shift,
(void *)primitive_bignum_less, primitive_bignum_less,
(void *)primitive_bignum_lesseq, primitive_bignum_lesseq,
(void *)primitive_bignum_greater, primitive_bignum_greater,
(void *)primitive_bignum_greatereq, primitive_bignum_greatereq,
(void *)primitive_bignum_bitp, primitive_bignum_bitp,
(void *)primitive_bignum_log2, primitive_bignum_log2,
(void *)primitive_byte_array_to_bignum, primitive_byte_array_to_bignum,
(void *)primitive_float_eq, primitive_float_eq,
(void *)primitive_float_add, primitive_float_add,
(void *)primitive_float_subtract, primitive_float_subtract,
(void *)primitive_float_multiply, primitive_float_multiply,
(void *)primitive_float_divfloat, primitive_float_divfloat,
(void *)primitive_float_mod, primitive_float_mod,
(void *)primitive_float_less, primitive_float_less,
(void *)primitive_float_lesseq, primitive_float_lesseq,
(void *)primitive_float_greater, primitive_float_greater,
(void *)primitive_float_greatereq, primitive_float_greatereq,
(void *)primitive_word, primitive_word,
(void *)primitive_word_xt, primitive_word_xt,
(void *)primitive_getenv, primitive_getenv,
(void *)primitive_setenv, primitive_setenv,
(void *)primitive_existsp, primitive_existsp,
(void *)primitive_gc, primitive_gc,
(void *)primitive_gc_stats, primitive_gc_stats,
(void *)primitive_save_image, primitive_save_image,
(void *)primitive_save_image_and_exit, primitive_save_image_and_exit,
(void *)primitive_datastack, primitive_datastack,
(void *)primitive_retainstack, primitive_retainstack,
(void *)primitive_callstack, primitive_callstack,
(void *)primitive_set_datastack, primitive_set_datastack,
(void *)primitive_set_retainstack, primitive_set_retainstack,
(void *)primitive_set_callstack, primitive_set_callstack,
(void *)primitive_exit, primitive_exit,
(void *)primitive_data_room, primitive_data_room,
(void *)primitive_code_room, primitive_code_room,
(void *)primitive_micros, primitive_micros,
(void *)primitive_modify_code_heap, primitive_modify_code_heap,
(void *)primitive_dlopen, primitive_dlopen,
(void *)primitive_dlsym, primitive_dlsym,
(void *)primitive_dlclose, primitive_dlclose,
(void *)primitive_byte_array, primitive_byte_array,
(void *)primitive_uninitialized_byte_array, primitive_uninitialized_byte_array,
(void *)primitive_displaced_alien, primitive_displaced_alien,
(void *)primitive_alien_signed_cell, primitive_alien_signed_cell,
(void *)primitive_set_alien_signed_cell, primitive_set_alien_signed_cell,
(void *)primitive_alien_unsigned_cell, primitive_alien_unsigned_cell,
(void *)primitive_set_alien_unsigned_cell, primitive_set_alien_unsigned_cell,
(void *)primitive_alien_signed_8, primitive_alien_signed_8,
(void *)primitive_set_alien_signed_8, primitive_set_alien_signed_8,
(void *)primitive_alien_unsigned_8, primitive_alien_unsigned_8,
(void *)primitive_set_alien_unsigned_8, primitive_set_alien_unsigned_8,
(void *)primitive_alien_signed_4, primitive_alien_signed_4,
(void *)primitive_set_alien_signed_4, primitive_set_alien_signed_4,
(void *)primitive_alien_unsigned_4, primitive_alien_unsigned_4,
(void *)primitive_set_alien_unsigned_4, primitive_set_alien_unsigned_4,
(void *)primitive_alien_signed_2, primitive_alien_signed_2,
(void *)primitive_set_alien_signed_2, primitive_set_alien_signed_2,
(void *)primitive_alien_unsigned_2, primitive_alien_unsigned_2,
(void *)primitive_set_alien_unsigned_2, primitive_set_alien_unsigned_2,
(void *)primitive_alien_signed_1, primitive_alien_signed_1,
(void *)primitive_set_alien_signed_1, primitive_set_alien_signed_1,
(void *)primitive_alien_unsigned_1, primitive_alien_unsigned_1,
(void *)primitive_set_alien_unsigned_1, primitive_set_alien_unsigned_1,
(void *)primitive_alien_float, primitive_alien_float,
(void *)primitive_set_alien_float, primitive_set_alien_float,
(void *)primitive_alien_double, primitive_alien_double,
(void *)primitive_set_alien_double, primitive_set_alien_double,
(void *)primitive_alien_cell, primitive_alien_cell,
(void *)primitive_set_alien_cell, primitive_set_alien_cell,
(void *)primitive_alien_address, primitive_alien_address,
(void *)primitive_set_slot, primitive_set_slot,
(void *)primitive_string_nth, primitive_string_nth,
(void *)primitive_set_string_nth_fast, primitive_set_string_nth_fast,
(void *)primitive_set_string_nth_slow, primitive_set_string_nth_slow,
(void *)primitive_resize_array, primitive_resize_array,
(void *)primitive_resize_string, primitive_resize_string,
(void *)primitive_array, primitive_array,
(void *)primitive_begin_scan, primitive_begin_scan,
(void *)primitive_next_object, primitive_next_object,
(void *)primitive_end_scan, primitive_end_scan,
(void *)primitive_size, primitive_size,
(void *)primitive_die, primitive_die,
(void *)primitive_fopen, primitive_fopen,
(void *)primitive_fgetc, primitive_fgetc,
(void *)primitive_fread, primitive_fread,
(void *)primitive_fputc, primitive_fputc,
(void *)primitive_fwrite, primitive_fwrite,
(void *)primitive_fflush, primitive_fflush,
(void *)primitive_fseek, primitive_fseek,
(void *)primitive_fclose, primitive_fclose,
(void *)primitive_wrapper, primitive_wrapper,
(void *)primitive_clone, primitive_clone,
(void *)primitive_string, primitive_string,
(void *)primitive_array_to_quotation, primitive_array_to_quotation,
(void *)primitive_quotation_xt, primitive_quotation_xt,
(void *)primitive_tuple, primitive_tuple,
(void *)primitive_profiling, primitive_profiling,
(void *)primitive_become, primitive_become,
(void *)primitive_sleep, primitive_sleep,
(void *)primitive_tuple_boa, primitive_tuple_boa,
(void *)primitive_callstack_to_array, primitive_callstack_to_array,
(void *)primitive_innermost_stack_frame_quot, primitive_innermost_stack_frame_quot,
(void *)primitive_innermost_stack_frame_scan, primitive_innermost_stack_frame_scan,
(void *)primitive_set_innermost_stack_frame_quot, primitive_set_innermost_stack_frame_quot,
(void *)primitive_call_clear, primitive_call_clear,
(void *)primitive_resize_byte_array, primitive_resize_byte_array,
(void *)primitive_dll_validp, primitive_dll_validp,
(void *)primitive_unimplemented, primitive_unimplemented,
(void *)primitive_clear_gc_stats, primitive_clear_gc_stats,
(void *)primitive_jit_compile, primitive_jit_compile,
(void *)primitive_load_locals, primitive_load_locals,
(void *)primitive_check_datastack, primitive_check_datastack,
(void *)primitive_inline_cache_miss, primitive_inline_cache_miss,
(void *)primitive_mega_cache_miss, primitive_mega_cache_miss,
(void *)primitive_lookup_method, primitive_lookup_method,
(void *)primitive_reset_dispatch_stats, primitive_reset_dispatch_stats,
(void *)primitive_dispatch_stats, primitive_dispatch_stats,
(void *)primitive_reset_inline_cache_stats, primitive_reset_inline_cache_stats,
(void *)primitive_inline_cache_stats, primitive_inline_cache_stats,
(void *)primitive_optimized_p, primitive_optimized_p,
}; };
} }

View File

@ -1,7 +1,8 @@
namespace factor namespace factor
{ {
extern void *primitives[]; extern "C" typedef void (*primitive_type)();
extern primitive_type primitives[];
#define PRIMITIVE(name) extern "C" void primitive_##name() #define PRIMITIVE(name) extern "C" void primitive_##name()