177 lines
4.5 KiB
C++
177 lines
4.5 KiB
C++
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);
|
|
|
|
}
|