namespace factor { #if defined(FACTOR_X86) extern "C" __attribute__ ((regparm (1))) typedef void (*primitive_type)(void *myvm); #define PRIMITIVE(name) extern "C" __attribute__ ((regparm (1))) void primitive_##name(void *myvm) #define PRIMITIVE_FORWARD(name) extern "C" __attribute__ ((regparm (1))) void primitive_##name(void *myvm) \ { \ PRIMITIVE_GETVM()->primitive_##name(); \ } #else extern "C" typedef void (*primitive_type)(void *myvm); #define PRIMITIVE(name) extern "C" void primitive_##name(void *myvm) #define PRIMITIVE_FORWARD(name) extern "C" void primitive_##name(void *myvm) \ { \ PRIMITIVE_GETVM()->primitive_##name(); \ } #endif extern const 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(ftell); 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_executing); 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(inline_cache_miss_tail); 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); PRIMITIVE(quot_compiled_p); PRIMITIVE(vm_ptr); }