]> gitweb.factorcode.org Git - factor.git/blobdiff - vm/primitives.hpp
vm: strip out call-counting profiler
[factor.git] / vm / primitives.hpp
index 049b44d389b9b683f4e0adbd87e991d76ae53243..7884cf2e30c9442aebb3360793debbbe0e8b6474 100644 (file)
 namespace factor
 {
 
-#define DECLARE_PRIMITIVE(name) VM_C_API void primitive_##name(factor_vm *parent);
-
 /* Generated with PRIMITIVE in primitives.cpp */
-DECLARE_PRIMITIVE(alien_address)
-DECLARE_PRIMITIVE(all_instances)
-DECLARE_PRIMITIVE(array)
-DECLARE_PRIMITIVE(array_to_quotation)
-DECLARE_PRIMITIVE(become)
-DECLARE_PRIMITIVE(bignum_add)
-DECLARE_PRIMITIVE(bignum_and)
-DECLARE_PRIMITIVE(bignum_bitp)
-DECLARE_PRIMITIVE(bignum_divint)
-DECLARE_PRIMITIVE(bignum_divmod)
-DECLARE_PRIMITIVE(bignum_eq)
-DECLARE_PRIMITIVE(bignum_greater)
-DECLARE_PRIMITIVE(bignum_greatereq)
-DECLARE_PRIMITIVE(bignum_less)
-DECLARE_PRIMITIVE(bignum_lesseq)
-DECLARE_PRIMITIVE(bignum_log2)
-DECLARE_PRIMITIVE(bignum_mod)
-DECLARE_PRIMITIVE(bignum_multiply)
-DECLARE_PRIMITIVE(bignum_not)
-DECLARE_PRIMITIVE(bignum_or)
-DECLARE_PRIMITIVE(bignum_shift)
-DECLARE_PRIMITIVE(bignum_subtract)
-DECLARE_PRIMITIVE(bignum_to_fixnum)
-DECLARE_PRIMITIVE(bignum_to_float)
-DECLARE_PRIMITIVE(bignum_xor)
-DECLARE_PRIMITIVE(bits_double)
-DECLARE_PRIMITIVE(bits_float)
-DECLARE_PRIMITIVE(byte_array)
-DECLARE_PRIMITIVE(byte_array_to_bignum)
-DECLARE_PRIMITIVE(call_clear)
-DECLARE_PRIMITIVE(callback)
-DECLARE_PRIMITIVE(callstack)
-DECLARE_PRIMITIVE(callstack_to_array)
-DECLARE_PRIMITIVE(check_datastack)
-DECLARE_PRIMITIVE(clone)
-DECLARE_PRIMITIVE(code_blocks)
-DECLARE_PRIMITIVE(code_room)
-DECLARE_PRIMITIVE(compact_gc)
-DECLARE_PRIMITIVE(compute_identity_hashcode)
-DECLARE_PRIMITIVE(data_room)
-DECLARE_PRIMITIVE(datastack)
-DECLARE_PRIMITIVE(die)
-DECLARE_PRIMITIVE(disable_gc_events)
-DECLARE_PRIMITIVE(dispatch_stats)
-DECLARE_PRIMITIVE(displaced_alien)
-DECLARE_PRIMITIVE(dlclose)
-DECLARE_PRIMITIVE(dll_validp)
-DECLARE_PRIMITIVE(dlopen)
-DECLARE_PRIMITIVE(dlsym)
-DECLARE_PRIMITIVE(double_bits)
-DECLARE_PRIMITIVE(enable_gc_events)
-DECLARE_PRIMITIVE(existsp)
-DECLARE_PRIMITIVE(exit)
-DECLARE_PRIMITIVE(fclose)
-DECLARE_PRIMITIVE(fflush)
-DECLARE_PRIMITIVE(fgetc)
-DECLARE_PRIMITIVE(fixnum_divint)
-DECLARE_PRIMITIVE(fixnum_divmod)
-DECLARE_PRIMITIVE(fixnum_shift)
-DECLARE_PRIMITIVE(fixnum_to_bignum)
-DECLARE_PRIMITIVE(fixnum_to_float)
-DECLARE_PRIMITIVE(float_add)
-DECLARE_PRIMITIVE(float_bits)
-DECLARE_PRIMITIVE(float_divfloat)
-DECLARE_PRIMITIVE(float_eq)
-DECLARE_PRIMITIVE(float_greater)
-DECLARE_PRIMITIVE(float_greatereq)
-DECLARE_PRIMITIVE(float_less)
-DECLARE_PRIMITIVE(float_lesseq)
-DECLARE_PRIMITIVE(float_mod)
-DECLARE_PRIMITIVE(float_multiply)
-DECLARE_PRIMITIVE(float_subtract)
-DECLARE_PRIMITIVE(float_to_bignum)
-DECLARE_PRIMITIVE(float_to_fixnum)
-DECLARE_PRIMITIVE(float_to_str)
-DECLARE_PRIMITIVE(fopen)
-DECLARE_PRIMITIVE(fputc)
-DECLARE_PRIMITIVE(fread)
-DECLARE_PRIMITIVE(fseek)
-DECLARE_PRIMITIVE(ftell)
-DECLARE_PRIMITIVE(full_gc)
-DECLARE_PRIMITIVE(fwrite)
-DECLARE_PRIMITIVE(identity_hashcode)
-DECLARE_PRIMITIVE(innermost_stack_frame_executing)
-DECLARE_PRIMITIVE(innermost_stack_frame_scan)
-DECLARE_PRIMITIVE(jit_compile)
-DECLARE_PRIMITIVE(load_locals)
-DECLARE_PRIMITIVE(lookup_method)
-DECLARE_PRIMITIVE(mega_cache_miss)
-DECLARE_PRIMITIVE(minor_gc)
-DECLARE_PRIMITIVE(modify_code_heap)
-DECLARE_PRIMITIVE(nano_count)
-DECLARE_PRIMITIVE(optimized_p)
-DECLARE_PRIMITIVE(profiling)
-DECLARE_PRIMITIVE(quot_compiled_p)
-DECLARE_PRIMITIVE(quotation_code)
-DECLARE_PRIMITIVE(reset_dispatch_stats)
-DECLARE_PRIMITIVE(resize_array)
-DECLARE_PRIMITIVE(resize_byte_array)
-DECLARE_PRIMITIVE(resize_string)
-DECLARE_PRIMITIVE(retainstack)
-DECLARE_PRIMITIVE(save_image)
-DECLARE_PRIMITIVE(save_image_and_exit)
-DECLARE_PRIMITIVE(set_datastack)
-DECLARE_PRIMITIVE(set_innermost_stack_frame_quot)
-DECLARE_PRIMITIVE(set_retainstack)
-DECLARE_PRIMITIVE(set_slot)
-DECLARE_PRIMITIVE(set_special_object)
-DECLARE_PRIMITIVE(set_string_nth_fast)
-DECLARE_PRIMITIVE(set_string_nth_slow)
-DECLARE_PRIMITIVE(size)
-DECLARE_PRIMITIVE(sleep)
-DECLARE_PRIMITIVE(special_object)
-DECLARE_PRIMITIVE(str_to_float)
-DECLARE_PRIMITIVE(string)
-DECLARE_PRIMITIVE(string_nth)
-DECLARE_PRIMITIVE(strip_stack_traces)
-DECLARE_PRIMITIVE(system_micros)
-DECLARE_PRIMITIVE(tuple)
-DECLARE_PRIMITIVE(tuple_boa)
-DECLARE_PRIMITIVE(unimplemented)
-DECLARE_PRIMITIVE(uninitialized_byte_array)
-DECLARE_PRIMITIVE(word)
-DECLARE_PRIMITIVE(word_code)
-DECLARE_PRIMITIVE(wrapper)
 
-/* These are generated with macros in alien.cpp, and not with PRIMIIVE in
-primitives.cpp */
-DECLARE_PRIMITIVE(alien_signed_cell)
-DECLARE_PRIMITIVE(set_alien_signed_cell)
-DECLARE_PRIMITIVE(alien_unsigned_cell)
-DECLARE_PRIMITIVE(set_alien_unsigned_cell)
-DECLARE_PRIMITIVE(alien_signed_8)
-DECLARE_PRIMITIVE(set_alien_signed_8)
-DECLARE_PRIMITIVE(alien_unsigned_8)
-DECLARE_PRIMITIVE(set_alien_unsigned_8)
-DECLARE_PRIMITIVE(alien_signed_4)
-DECLARE_PRIMITIVE(set_alien_signed_4)
-DECLARE_PRIMITIVE(alien_unsigned_4)
-DECLARE_PRIMITIVE(set_alien_unsigned_4)
-DECLARE_PRIMITIVE(alien_signed_2)
-DECLARE_PRIMITIVE(set_alien_signed_2)
-DECLARE_PRIMITIVE(alien_unsigned_2)
-DECLARE_PRIMITIVE(set_alien_unsigned_2)
-DECLARE_PRIMITIVE(alien_signed_1)
-DECLARE_PRIMITIVE(set_alien_signed_1)
-DECLARE_PRIMITIVE(alien_unsigned_1)
-DECLARE_PRIMITIVE(set_alien_unsigned_1)
-DECLARE_PRIMITIVE(alien_float)
-DECLARE_PRIMITIVE(set_alien_float)
-DECLARE_PRIMITIVE(alien_double)
-DECLARE_PRIMITIVE(set_alien_double)
-DECLARE_PRIMITIVE(alien_cell)
-DECLARE_PRIMITIVE(set_alien_cell)
+#define EACH_PRIMITIVE(_) \
+       _(alien_address) \
+       _(all_instances) \
+       _(array) \
+       _(array_to_quotation) \
+       _(become) \
+       _(bignum_add) \
+       _(bignum_and) \
+       _(bignum_bitp) \
+       _(bignum_divint) \
+       _(bignum_divmod) \
+       _(bignum_eq) \
+       _(bignum_greater) \
+       _(bignum_greatereq) \
+       _(bignum_less) \
+       _(bignum_lesseq) \
+       _(bignum_log2) \
+       _(bignum_mod) \
+       _(bignum_multiply) \
+       _(bignum_not) \
+       _(bignum_or) \
+       _(bignum_shift) \
+       _(bignum_subtract) \
+       _(bignum_to_fixnum) \
+       _(bignum_xor) \
+       _(bits_double) \
+       _(bits_float) \
+       _(byte_array) \
+       _(callback) \
+       _(callstack) \
+       _(callstack_bounds) \
+       _(callstack_for) \
+       _(callstack_to_array) \
+       _(check_datastack) \
+       _(clear_samples) \
+       _(clone) \
+       _(code_blocks) \
+       _(code_room) \
+       _(compact_gc) \
+       _(compute_identity_hashcode) \
+       _(context_object) \
+       _(context_object_for) \
+       _(current_callback) \
+       _(data_room) \
+       _(datastack) \
+       _(datastack_for) \
+       _(die) \
+       _(disable_gc_events) \
+       _(dispatch_stats) \
+       _(displaced_alien) \
+       _(dlclose) \
+       _(dll_validp) \
+       _(dlopen) \
+       _(dlsym) \
+       _(dlsym_raw) \
+       _(double_bits) \
+       _(enable_gc_events) \
+       _(existsp) \
+       _(exit) \
+       _(fclose) \
+       _(fflush) \
+       _(fgetc) \
+       _(fixnum_divint) \
+       _(fixnum_divmod) \
+       _(fixnum_shift) \
+       _(fixnum_to_bignum) \
+       _(fixnum_to_float) \
+       _(float_add) \
+       _(float_bits) \
+       _(float_divfloat) \
+       _(float_eq) \
+       _(float_greater) \
+       _(float_greatereq) \
+       _(float_less) \
+       _(float_lesseq) \
+       _(float_multiply) \
+       _(float_subtract) \
+       _(float_to_bignum) \
+       _(float_to_fixnum) \
+       _(fopen) \
+       _(format_float) \
+       _(fputc) \
+       _(fread) \
+       _(fseek) \
+       _(ftell) \
+       _(full_gc) \
+       _(fwrite) \
+       _(get_samples) \
+       _(identity_hashcode) \
+       _(innermost_stack_frame_executing) \
+       _(innermost_stack_frame_scan) \
+       _(jit_compile) \
+       _(load_locals) \
+       _(lookup_method) \
+       _(mega_cache_miss) \
+       _(minor_gc) \
+       _(modify_code_heap) \
+       _(nano_count) \
+       _(optimized_p) \
+       _(quot_compiled_p) \
+       _(quotation_code) \
+       _(reset_dispatch_stats) \
+       _(resize_array) \
+       _(resize_byte_array) \
+       _(resize_string) \
+       _(retainstack) \
+       _(retainstack_for) \
+       _(sampling_profiler) \
+       _(save_image) \
+       _(save_image_and_exit) \
+       _(set_context_object) \
+       _(set_datastack) \
+       _(set_innermost_stack_frame_quot) \
+       _(set_retainstack) \
+       _(set_slot) \
+       _(set_special_object) \
+       _(set_string_nth_fast) \
+       _(size) \
+       _(sleep) \
+       _(special_object) \
+       _(string) \
+       _(strip_stack_traces) \
+       _(tuple) \
+       _(tuple_boa) \
+       _(unimplemented) \
+       _(uninitialized_byte_array) \
+       _(word) \
+       _(word_code) \
+       _(wrapper)
+
+#define EACH_ALIEN_PRIMITIVE(_) \
+       _(signed_cell,fixnum,from_signed_cell,to_fixnum) \
+       _(unsigned_cell,cell,from_unsigned_cell,to_cell) \
+       _(signed_8,s64,from_signed_8,to_signed_8) \
+       _(unsigned_8,u64,from_unsigned_8,to_unsigned_8) \
+       _(signed_4,s32,from_signed_cell,to_fixnum) \
+       _(unsigned_4,u32,from_unsigned_cell,to_cell) \
+       _(signed_2,s16,from_signed_cell,to_fixnum) \
+       _(unsigned_2,u16,from_unsigned_cell,to_cell) \
+       _(signed_1,s8,from_signed_cell,to_fixnum) \
+       _(unsigned_1,u8,from_unsigned_cell,to_cell) \
+       _(float,float,allot_float,to_float) \
+       _(double,double,allot_float,to_double) \
+       _(cell,void *,allot_alien,pinned_alien_offset)
+
+#define DECLARE_PRIMITIVE(name) VM_C_API void primitive_##name(factor_vm *parent);
+
+#define DECLARE_ALIEN_PRIMITIVE(name, type, from, to) \
+       DECLARE_PRIMITIVE(alien_##name) \
+       DECLARE_PRIMITIVE(set_alien_##name)
 
+EACH_PRIMITIVE(DECLARE_PRIMITIVE)
+EACH_ALIEN_PRIMITIVE(DECLARE_ALIEN_PRIMITIVE)
 }