]> gitweb.factorcode.org Git - factor.git/commitdiff
Do not lower primitives to "void*" to get better compiler checking
authorSamuel Tardieu <sam@rfc1149.net>
Mon, 4 May 2009 12:32:09 +0000 (14:32 +0200)
committerSamuel Tardieu <sam@rfc1149.net>
Mon, 4 May 2009 12:32:09 +0000 (14:32 +0200)
vm/primitives.cpp
vm/primitives.hpp

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