From 274bce975ac32e49ccda1318b54d623e63a01fae Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Thu, 8 Oct 2020 14:45:00 -0600 Subject: [PATCH] remove unintended copy of include files --- racket/src/include/escheme.h | 33 - racket/src/include/ext.exp | 5 - racket/src/include/mzconfig.h | 105 -- racket/src/include/mzscheme.exp | 592 -------- racket/src/include/mzscheme3m.exp | 599 -------- racket/src/include/racket_version.h | 36 - racket/src/include/scheme.h | 2134 --------------------------- racket/src/include/schemef.h | 1194 --------------- racket/src/include/schemegc2.h | 666 --------- racket/src/include/schemex.h | 974 ------------ racket/src/include/schemexm.h | 730 --------- racket/src/include/schexn.h | 136 -- racket/src/include/schgc2obj.h | 37 - racket/src/include/schthread.h | 769 ---------- racket/src/include/schvers.h | 36 - racket/src/include/sconfig.h | 1163 --------------- racket/src/include/stypes.h | 301 ---- racket/src/include/uconfig.h | 24 - 18 files changed, 9534 deletions(-) delete mode 100644 racket/src/include/escheme.h delete mode 100644 racket/src/include/ext.exp delete mode 100644 racket/src/include/mzconfig.h delete mode 100644 racket/src/include/mzscheme.exp delete mode 100644 racket/src/include/mzscheme3m.exp delete mode 100644 racket/src/include/racket_version.h delete mode 100644 racket/src/include/scheme.h delete mode 100644 racket/src/include/schemef.h delete mode 100644 racket/src/include/schemegc2.h delete mode 100644 racket/src/include/schemex.h delete mode 100644 racket/src/include/schemexm.h delete mode 100644 racket/src/include/schexn.h delete mode 100644 racket/src/include/schgc2obj.h delete mode 100644 racket/src/include/schthread.h delete mode 100644 racket/src/include/schvers.h delete mode 100644 racket/src/include/sconfig.h delete mode 100644 racket/src/include/stypes.h delete mode 100644 racket/src/include/uconfig.h diff --git a/racket/src/include/escheme.h b/racket/src/include/escheme.h deleted file mode 100644 index 98f60f583f..0000000000 --- a/racket/src/include/escheme.h +++ /dev/null @@ -1,33 +0,0 @@ -/* This file should be included by Racket dynamically-loaded - extenstion files */ - -#ifndef E_SCHEME_H -#define E_SCHEME_H - -#define SCHEME_DIRECT_EMBEDDED 0 - -#include "scheme.h" - -#ifdef CODEFRAGMENT_DYNAMIC_LOAD -#pragma export on -#endif - -#ifdef __cplusplus -extern "C" -{ -#endif - -extern Scheme_Object *scheme_initialize(Scheme_Env *global_env); -extern Scheme_Object *scheme_reload(Scheme_Env *global_env); -extern Scheme_Object *scheme_module_name(void); - -#ifdef __cplusplus -} -#endif - -#ifdef CODEFRAGMENT_DYNAMIC_LOAD -#pragma export off -#endif - -#endif /* ! E_SCHEME_H */ - diff --git a/racket/src/include/ext.exp b/racket/src/include/ext.exp deleted file mode 100644 index dd51367204..0000000000 --- a/racket/src/include/ext.exp +++ /dev/null @@ -1,5 +0,0 @@ -#! .. -scheme_initialize_internal -scheme_initialize -scheme_reload -scheme_module_name diff --git a/racket/src/include/mzconfig.h b/racket/src/include/mzconfig.h deleted file mode 100644 index b345c61c34..0000000000 --- a/racket/src/include/mzconfig.h +++ /dev/null @@ -1,105 +0,0 @@ -/* mzconfig.h. Generated from mzconfig.h.in by configure. */ - -/* This file contains information that was gathered by the configure script. */ - -#ifndef __MZSCHEME_CONFIGURATION_INFO__ -#define __MZSCHEME_CONFIGURATION_INFO__ - -/* The size of a `int', as computed by sizeof. */ -#define SIZEOF_INT 4 - -/* The size of a `short', as computed by sizeof. */ -#define SIZEOF_SHORT 2 - -/* The size of a `long', as computed by sizeof. */ -#define SIZEOF_LONG 8 - -/* The size of a `long long', as computed by sizeof. */ -#define SIZEOF_LONG_LONG 8 - -/* The size of a `void *', as computed by sizeof. */ -#define SIZEOF_VOID_P 8 - -/* The size of a `bool' with , as computed by sizeof. */ -#define SIZEOF_BOOL 1 - -/* Whether `intptr_t' is available. */ -#define HAVE_INTPTR_T 1 - -/* Whether `uintptr_t' is available. */ -#define HAVE_UINTPTR_T 1 - -#ifdef HAVE_INTPTR_T -# include -#endif -#ifndef HAVE_INTPTR_T -typedef long intptr_t; -#endif -#ifndef HAVE_UINTPTR_T -typedef unsigned long uintptr_t; -#endif - -/* Endianness. */ -/* #undef SCHEME_BIG_ENDIAN */ - -/* Direction of stack growth: 1 = up, -1 = down, 0 = unknown. */ -#define STACK_DIRECTION -1 - -/* Whether __attribute__ ((noinline)) works. */ -#define MZ_USE_NOINLINE 1 - -/* Whether pthread_rwlock is available. */ -#define HAVE_PTHREAD_RWLOCK 1 - -/* When mmap() and mprotect() are available: */ -#define HAVE_MMAP_MPROTECT 1 - -/* To enable 2^16 page size instead of 2^14: */ -/* #undef MZ_USE_LARGE_PAGE_SIZE */ - -/* When __builtin_popcount() is available: */ -#define MZ_HAS_BUILTIN_POPCOUNT 1 - -/* When __builtin_clz() is available: */ -#define MZ_HAS_BUILTIN_CLZ 1 - -/* Enable futures: */ -#define MZ_USE_FUTURES 1 - -/* Enable places --- 3m only: */ -#ifdef MZ_PRECISE_GC -#define MZ_USE_PLACES 1 -#endif - -/* Enable FFI polling: */ -/* #undef MZ_USE_FFIPOLL */ - -/* Whether __sync_bool_compare_and_swap() works: */ -#define MZ_CAS_AVAILABLE 1 - -/* Configure use of pthreads for the user-thread timer. */ -#define USE_PTHREAD_INSTEAD_OF_ITIMER 1 - -/* Enable single-precision floats [as default]: */ -#define USE_SINGLE_FLOATS 1 -/* #undef USE_SINGLE_FLOATS_AS_DEFAULT */ - -/* To disable extflonums when they would otherwise work: */ -/* #undef MZ_NO_EXTFLONUMS */ - -/* Extflonums are specifically requested (so complain if not supported): */ -/* #undef MZ_INSIST_EXTFLONUMS */ - -/* Library subpath */ -/* #undef SPLS_SUFFIX */ - -/* Use Generations with the GC */ -#define USE_GC_GENS 1 - -/* For platforms like Linux, where context info may not be available: */ -/* #undef MZ_NO_UNWIND_SUPPORT */ - -/* Initialize the compiled directory path "compiled/bc": */ -/* #undef COMPILED_PATH_AS_BC */ - -#endif diff --git a/racket/src/include/mzscheme.exp b/racket/src/include/mzscheme.exp deleted file mode 100644 index 0b4d4df049..0000000000 --- a/racket/src/include/mzscheme.exp +++ /dev/null @@ -1,592 +0,0 @@ -#!.. -scheme_init_jmpup_buf -scheme_setjmpup_relative -scheme_longjmpup -scheme_reset_jmpup_buf -scheme_clear_escape -scheme_new_jmpupbuf_holder -scheme_current_config -scheme_extend_config -scheme_install_config -scheme_get_param -scheme_set_param -scheme_get_thread_param -scheme_set_thread_param -scheme_get_env -scheme_inherit_cells -scheme_current_break_cell -scheme_current_thread -scheme_fuel_counter -scheme_current_thread_ptr -scheme_fuel_counter_ptr -scheme_get_current_thread -scheme_start_atomic -scheme_end_atomic -scheme_end_atomic_no_swap -scheme_start_in_scheduler -scheme_end_in_scheduler -scheme_out_of_fuel -scheme_thread -scheme_thread_w_details -scheme_kill_thread -scheme_break_thread -scheme_break_main_thread -scheme_set_break_main_target -scheme_thread_block -scheme_thread_block_enable_break -scheme_swap_thread -scheme_making_progress -scheme_weak_suspend_thread -scheme_weak_resume_thread -scheme_block_until -scheme_block_until_enable_break -scheme_block_until_unless -scheme_wait_input_allowed -scheme_unless_ready -scheme_in_main_thread -scheme_cancel_sleep -scheme_start_sleeper_thread -scheme_end_sleeper_thread -scheme_notify_sleep_progress -scheme_make_thread_cell -scheme_thread_cell_get -scheme_thread_cell_set -scheme_tls_allocate -scheme_tls_set -scheme_tls_get -scheme_make_custodian -scheme_add_managed -scheme_custodian_check_available -scheme_custodian_is_available -scheme_remove_managed -scheme_close_managed -scheme_schedule_custodian_close -scheme_add_custodian_extractor -scheme_add_atexit_closer -scheme_add_atexit -scheme_add_evt -scheme_add_evt_through_sema -scheme_is_evt -scheme_sync -scheme_sync_enable_break -scheme_sync_timeout -scheme_make_evt_set -scheme_add_swap_callback -scheme_add_swap_out_callback -scheme_call_enable_break -scheme_close_should_force_port_closed -scheme_push_kill_action -scheme_pop_kill_action -scheme_set_can_break -scheme_push_break_enable -scheme_pop_break_enable -scheme_with_stack_freeze -scheme_frozen_run_some -scheme_is_in_frozen_stack -scheme_signal_error -scheme_raise_exn -scheme_warning -scheme_raise -scheme_log_level_p -scheme_log -scheme_log_message -scheme_log_abort -scheme_out_of_memory_abort -scheme_wrong_count -scheme_wrong_count_m -scheme_case_lambda_wrong_count -scheme_wrong_type -scheme_wrong_field_type -scheme_arg_mismatch -scheme_wrong_return_arity -scheme_unbound_global -scheme_dynamic_wind -scheme_make_type -scheme_get_type_name -scheme_eof -scheme_make_eof -scheme_null -scheme_make_null -scheme_true -scheme_make_true -scheme_false -scheme_make_false -scheme_void -scheme_make_void -scheme_undefined -scheme_tail_call_waiting -scheme_multiple_values -scheme_uchar_table -scheme_uchar_cases_table -scheme_uchar_cats_table -scheme_uchar_ups -scheme_uchar_downs -scheme_uchar_titles -scheme_uchar_folds -scheme_uchar_combining_classes -scheme_eval -scheme_eval_multi -scheme_eval_with_prompt -scheme_eval_multi_with_prompt -scheme_eval_compiled -scheme_eval_compiled_multi -_scheme_eval_compiled -_scheme_eval_compiled_multi -scheme_apply -scheme_apply_multi -scheme_apply_no_eb -scheme_apply_multi_no_eb -scheme_apply_to_list -scheme_apply_with_prompt -scheme_apply_multi_with_prompt -_scheme_apply_with_prompt -_scheme_apply_multi_with_prompt -scheme_eval_string -scheme_eval_string_multi -scheme_eval_string_all -scheme_eval_string_with_prompt -scheme_eval_string_multi_with_prompt -scheme_eval_string_all_with_prompt -scheme_eval_module_string -_scheme_apply_known_prim_closure -_scheme_apply_known_prim_closure_multi -_scheme_apply_prim_closure -_scheme_apply_prim_closure_multi -scheme_current_argument_stack -scheme_call_with_prompt -scheme_call_with_prompt_multi -_scheme_call_with_prompt -_scheme_call_with_prompt_multi -scheme_values -scheme_check_one_value -scheme_tail_apply -scheme_tail_apply_no_copy -scheme_tail_apply_to_list -scheme_tail_eval_expr -scheme_set_tail_buffer_size -scheme_force_value -scheme_force_one_value -scheme_set_cont_mark -scheme_push_continuation_frame -scheme_pop_continuation_frame -scheme_temp_dec_mark_depth -scheme_temp_inc_mark_depth -scheme_current_continuation_marks -scheme_extract_one_cc_mark -scheme_extract_one_cc_mark_to_tag -scheme_do_eval -scheme_eval_compiled_stx_string -scheme_load_compiled_stx_string -scheme_compiled_stx_symbol -scheme_eval_compiled_sized_string -scheme_eval_compiled_sized_string_with_magic -scheme_detach_multple_array -GC_malloc -GC_malloc_atomic -GC_malloc_stubborn -GC_malloc_uncollectable -scheme_malloc_code -scheme_free_code -scheme_malloc_gcable_code -scheme_malloc_eternal -scheme_end_stubborn_change -scheme_calloc -scheme_strdup -scheme_strdup_eternal -scheme_malloc_fail_ok -scheme_weak_reference -scheme_weak_reference_indirect -scheme_unweak_reference -scheme_add_finalizer -scheme_add_finalizer_once -scheme_subtract_finalizer -scheme_add_scheme_finalizer -scheme_add_scheme_finalizer_once -scheme_register_finalizer -scheme_remove_all_finalization -scheme_dont_gc_ptr -scheme_gc_ptr_ok -scheme_collect_garbage -GC_register_traversers -GC_resolve -GC_mark -GC_fixup -GC_fixup_self -scheme_malloc_immobile_box -scheme_free_immobile_box -scheme_make_bucket_table -scheme_add_to_table -scheme_change_in_table -scheme_lookup_in_table -scheme_bucket_from_table -scheme_bucket_table_equal -scheme_clone_bucket_table -scheme_make_hash_table -scheme_make_hash_table_equal -scheme_make_hash_table_eqv -scheme_hash_set -scheme_hash_get -scheme_eq_hash_get -scheme_hash_set_atomic -scheme_hash_get_atomic -scheme_hash_table_equal -scheme_is_hash_table_equal -scheme_is_hash_table_eqv -scheme_clone_hash_table -scheme_make_hash_tree -scheme_hash_tree_set -scheme_hash_tree_get -scheme_hash_tree_next -scheme_hash_tree_index -scheme_hash_tree_equal -scheme_is_hash_tree_equal -scheme_is_hash_tree_eqv -scheme_make_prim -scheme_make_noneternal_prim -scheme_make_prim_w_arity -scheme_make_folding_prim -scheme_make_immed_prim -scheme_make_noncm_prim -scheme_make_noneternal_prim_w_arity -scheme_make_prim_w_everything -scheme_make_prim_closure_w_arity -scheme_make_folding_prim_closure -scheme_make_closed_prim -scheme_make_closed_prim_w_arity -scheme_make_folding_closed_prim -scheme_make_closed_prim_w_everything -scheme_prim_is_method -scheme_make_pair -scheme_make_mutable_pair -scheme_make_raw_pair -scheme_make_byte_string -scheme_make_sized_byte_string -scheme_make_sized_offset_byte_string -scheme_make_immutable_sized_byte_string -scheme_make_byte_string_without_copying -scheme_alloc_byte_string -scheme_append_byte_string -scheme_make_utf8_string -scheme_make_sized_utf8_string -scheme_make_sized_offset_utf8_string -scheme_make_immutable_sized_utf8_string -scheme_make_locale_string -scheme_char_string_to_byte_string -scheme_byte_string_to_char_string -scheme_char_string_to_byte_string_locale -scheme_byte_string_to_char_string_locale -scheme_char_string_to_path -scheme_path_to_char_string -scheme_make_char_string -scheme_make_sized_char_string -scheme_make_sized_offset_char_string -scheme_make_immutable_sized_char_string -scheme_make_char_string_without_copying -scheme_alloc_char_string -scheme_append_char_string -scheme_string_recase -scheme_make_vector -scheme_make_integer_value -scheme_make_integer_value_from_unsigned -scheme_make_integer_value_from_long_long -scheme_make_integer_value_from_unsigned_long_long -scheme_make_integer_value_from_long_halves -scheme_make_integer_value_from_unsigned_long_halves -scheme_make_double -scheme_make_char -scheme_make_char_or_nul -scheme_make_sema -scheme_post_sema -scheme_post_sema_all -scheme_wait_sema -scheme_try_plain_sema -scheme_char_constants -scheme_make_channel -scheme_make_channel_put_evt -scheme_get_int_val -scheme_get_unsigned_int_val -scheme_get_long_long_val -scheme_get_unsigned_long_long_val -scheme_real_to_double -scheme_make_cptr -scheme_make_offset_cptr -scheme_make_external_cptr -scheme_make_offset_external_cptr -scheme_get_proc_name -scheme_utf8_decode -scheme_utf8_decode_as_prefix -scheme_utf8_decode_all -scheme_utf8_decode_prefix -scheme_utf8_decode_to_buffer -scheme_utf8_decode_to_buffer_len -scheme_utf8_decode_count -scheme_utf8_encode -scheme_utf8_encode_all -scheme_utf8_encode_to_buffer -scheme_utf8_encode_to_buffer_len -scheme_ucs4_to_utf16 -scheme_utf16_to_ucs4 -scheme_open_converter -scheme_close_converter -scheme_make_bignum -scheme_make_bignum_from_unsigned -scheme_make_bignum_from_long_long -scheme_make_bignum_from_unsigned_long_long -scheme_bignum_to_double -scheme_bignum_from_double -scheme_bignum_to_string -scheme_bignum_to_allocated_string -scheme_read_bignum -scheme_read_bignum_bytes -scheme_bignum_normalize -scheme_make_rational -scheme_rational_to_double -scheme_rational_from_double -scheme_rational_normalize -scheme_rational_numerator -scheme_rational_denominator -scheme_make_complex -scheme_complex_normalize -scheme_complex_real_part -scheme_complex_imaginary_part -scheme_is_exact -scheme_is_inexact -scheme_expand -scheme_compile -scheme_read -scheme_read_syntax -scheme_write -scheme_print -scheme_display -scheme_write_w_max -scheme_display_w_max -scheme_print_w_max -scheme_write_byte_string -scheme_write_char_string -scheme_put_byte_string -scheme_put_char_string -scheme_write_to_string -scheme_display_to_string -scheme_print_to_string -scheme_write_to_string_w_max -scheme_display_to_string_w_max -scheme_print_to_string_w_max -scheme_debug_print -scheme_flush_output -scheme_format -scheme_printf -scheme_format_utf8 -scheme_printf_utf8 -scheme_getc -scheme_get_byte -scheme_peekc -scheme_peek_byte -scheme_peekc_skip -scheme_peek_byte_skip -scheme_getc_special_ok -scheme_get_byte_special_ok -scheme_peekc_special_ok -scheme_peek_byte_special_ok_skip -scheme_peekc_special_ok_skip -scheme_ungetc -scheme_byte_ready -scheme_char_ready -scheme_peekc_is_ungetc -scheme_need_wakeup -scheme_get_byte_string -scheme_get_byte_string_unless -scheme_get_byte_string_special_ok_unless -scheme_progress_evt -scheme_peeked_read -scheme_get_char_string -scheme_get_bytes -scheme_get_ready_special -scheme_tell -scheme_output_tell -scheme_tell_line -scheme_tell_column -scheme_tell_all -scheme_count_lines -scheme_close_input_port -scheme_close_output_port -scheme_write_special -scheme_write_special_nonblock -scheme_make_write_evt -scheme_port_record -scheme_input_port_record -scheme_output_port_record -scheme_is_input_port -scheme_is_output_port -scheme_make_port_type -scheme_make_input_port -scheme_make_output_port -scheme_set_next_port_custodian -scheme_set_port_location_fun -scheme_set_port_count_lines_fun -scheme_progress_evt_via_get -scheme_peeked_read_via_get -scheme_write_evt_via_write -scheme_write_special_evt_via_write_special -scheme_open_input_file -scheme_open_output_file -scheme_open_input_output_file -scheme_open_output_file_with_mode -scheme_make_file_input_port -scheme_make_named_file_input_port -scheme_make_file_output_port -scheme_make_fd_input_port -scheme_make_fd_output_port -scheme_make_byte_string_input_port -scheme_make_sized_byte_string_input_port -scheme_make_byte_string_output_port -scheme_get_sized_byte_string_output -scheme_get_reset_sized_byte_string_output -scheme_pipe -scheme_pipe_with_limit -scheme_make_null_output_port -scheme_make_redirect_output_port -scheme_set_file_position -scheme_file_exists -scheme_directory_exists -scheme_expand_filename -scheme_expand_user_filename -scheme_expand_string_filename -scheme_os_getcwd -scheme_os_setcwd -scheme_getdrive -scheme_split_path -scheme_build_path -scheme_path_to_directory_path -scheme_path_to_complete_path -scheme_make_path -scheme_make_sized_path -scheme_make_sized_offset_path -scheme_make_sized_offset_kind_path -scheme_make_path_without_copying -scheme_alloc_fdset_array -scheme_init_fdset_array -scheme_get_fdset -scheme_fdzero -scheme_fdset -scheme_fdclr -scheme_fdisset -scheme_add_fd_handle -scheme_add_fd_eventmask -scheme_collapse_win_fd -scheme_security_check_file -scheme_security_check_file_link -scheme_security_check_network -scheme_get_host_address -scheme_free_host_address -scheme_host_address_strerror -scheme_getnameinfo -scheme_get_port_file_descriptor -scheme_get_port_fd -scheme_get_port_socket -scheme_socket_to_ports -scheme_set_type_printer -scheme_print_bytes -scheme_print_utf8 -scheme_print_string -scheme_read_byte_string -scheme_make_namespace -scheme_add_global -scheme_add_global_symbol -scheme_make_envunbox -scheme_lookup_global -scheme_global_bucket -scheme_global_keyword_bucket -scheme_module_bucket -scheme_builtin_value -scheme_set_global_bucket -scheme_install_macro -scheme_save_initial_module_set -scheme_primitive_module -scheme_finish_primitive_module -scheme_protect_primitive_provide -scheme_make_modidx -scheme_apply_for_syntax_in_env -scheme_dynamic_require -scheme_namespace_require -scheme_is_module_path -scheme_datum_to_kernel_stx -scheme_intern_symbol -scheme_intern_exact_symbol -scheme_intern_exact_char_symbol -scheme_make_symbol -scheme_make_exact_symbol -scheme_make_exact_char_symbol -scheme_symbol_name -scheme_symbol_name_and_size -scheme_symbol_val -scheme_intern_exact_keyword -scheme_intern_exact_char_keyword -scheme_make_struct_values -scheme_make_struct_names -scheme_make_struct_type -scheme_make_struct_type2 -scheme_make_struct_instance -scheme_is_struct_instance -scheme_struct_ref -scheme_struct_set -scheme_make_struct_type_property -scheme_make_struct_type_property_w_guard -scheme_struct_type_property_ref -scheme_chaperone_struct_type_property_ref -scheme_make_location -scheme_is_location -scheme_make_inspector -scheme_is_subinspector -scheme_eq -scheme_eqv -scheme_equal -scheme_chaperone_of -scheme_equal_hash_key -scheme_equal_hash_key2 -scheme_recur_equal_hash_key -scheme_recur_equal_hash_key2 -scheme_eqv_hash_key -scheme_eqv_hash_key2 -scheme_set_type_equality -scheme_recur_equal -scheme_build_list -scheme_build_list_offset -scheme_is_list -scheme_list_length -scheme_proper_list_length -scheme_alloc_list -scheme_map_1 -scheme_car -scheme_cdr -scheme_cadr -scheme_caddr -scheme_vector_to_list -scheme_list_to_vector -scheme_append -scheme_reverse -scheme_box -scheme_unbox -scheme_set_box -scheme_make_weak_box -scheme_make_ephemeron -scheme_ephemeron_value -scheme_ephemeron_key -scheme_load -scheme_load_extension -scheme_register_extension_global -scheme_get_seconds -scheme_get_milliseconds -scheme_get_inexact_milliseconds -scheme_get_process_milliseconds -scheme_get_thread_milliseconds -scheme_banner -scheme_version -scheme_check_proc_arity -scheme_check_proc_arity2 -scheme_make_provided_string -scheme_make_args_string -scheme_system_library_subpath -scheme_signal_received -scheme_signal_received_at -scheme_get_signal_handle -scheme_char_strlen diff --git a/racket/src/include/mzscheme3m.exp b/racket/src/include/mzscheme3m.exp deleted file mode 100644 index 4375d1e4ff..0000000000 --- a/racket/src/include/mzscheme3m.exp +++ /dev/null @@ -1,599 +0,0 @@ -#!.. -scheme_init_jmpup_buf -scheme_setjmpup_relative -scheme_longjmpup -scheme_reset_jmpup_buf -scheme_clear_escape -scheme_new_jmpupbuf_holder -scheme_current_config -scheme_extend_config -scheme_install_config -scheme_get_param -scheme_set_param -scheme_get_thread_param -scheme_set_thread_param -scheme_get_env -scheme_inherit_cells -scheme_current_break_cell -scheme_current_thread -scheme_fuel_counter -scheme_current_thread_ptr -scheme_fuel_counter_ptr -scheme_get_current_thread -scheme_start_atomic -scheme_end_atomic -scheme_end_atomic_no_swap -scheme_start_in_scheduler -scheme_end_in_scheduler -scheme_out_of_fuel -scheme_thread -scheme_thread_w_details -scheme_kill_thread -scheme_break_thread -scheme_break_main_thread -scheme_set_break_main_target -scheme_thread_block -scheme_thread_block_enable_break -scheme_swap_thread -scheme_making_progress -scheme_weak_suspend_thread -scheme_weak_resume_thread -scheme_block_until -scheme_block_until_enable_break -scheme_block_until_unless -scheme_wait_input_allowed -scheme_unless_ready -scheme_in_main_thread -scheme_cancel_sleep -scheme_start_sleeper_thread -scheme_end_sleeper_thread -scheme_notify_sleep_progress -scheme_make_thread_cell -scheme_thread_cell_get -scheme_thread_cell_set -scheme_tls_allocate -scheme_tls_set -scheme_tls_get -scheme_make_custodian -scheme_add_managed -scheme_custodian_check_available -scheme_custodian_is_available -scheme_remove_managed -scheme_close_managed -scheme_schedule_custodian_close -scheme_add_custodian_extractor -scheme_add_atexit_closer -scheme_atexit -scheme_add_evt -scheme_add_evt_through_sema -scheme_is_evt -scheme_sync -scheme_sync_enable_break -scheme_sync_timeout -scheme_make_evt_set -scheme_add_swap_callback -scheme_add_swap_out_callback -scheme_call_enable_break -scheme_close_should_force_port_closed -scheme_push_kill_action -scheme_pop_kill_action -scheme_set_can_break -scheme_push_break_enable -scheme_pop_break_enable -scheme_with_stack_freeze -scheme_frozen_run_some -scheme_is_in_frozen_stack -scheme_signal_error -scheme_raise_exn -scheme_warning -scheme_raise -scheme_log_level_p -scheme_log -scheme_log_message -scheme_log_abort -scheme_out_of_memory_abort -scheme_wrong_count -scheme_wrong_count_m -scheme_case_lambda_wrong_count -scheme_wrong_type -scheme_wrong_field_type -scheme_arg_mismatch -scheme_wrong_return_arity -scheme_unbound_global -scheme_dynamic_wind -scheme_make_type -scheme_get_type_name -scheme_eof -scheme_make_eof -scheme_null -scheme_make_null -scheme_true -scheme_make_true -scheme_false -scheme_make_false -scheme_void -scheme_make_void -scheme_undefined -scheme_tail_call_waiting -scheme_multiple_values -scheme_uchar_table -scheme_uchar_cases_table -scheme_uchar_cats_table -scheme_uchar_ups -scheme_uchar_downs -scheme_uchar_titles -scheme_uchar_folds -scheme_uchar_combining_classes -scheme_eval -scheme_eval_multi -scheme_eval_with_prompt -scheme_eval_multi_with_prompt -scheme_eval_compiled -scheme_eval_compiled_multi -_scheme_eval_compiled -_scheme_eval_compiled_multi -scheme_apply -scheme_apply_multi -scheme_apply_no_eb -scheme_apply_multi_no_eb -scheme_apply_to_list -scheme_apply_with_prompt -scheme_apply_multi_with_prompt -_scheme_apply_with_prompt -_scheme_apply_multi_with_prompt -scheme_eval_string -scheme_eval_string_multi -scheme_eval_string_all -scheme_eval_string_with_prompt -scheme_eval_string_multi_with_prompt -scheme_eval_string_all_with_prompt -scheme_eval_module_string -_scheme_apply_known_prim_closure -_scheme_apply_known_prim_closure_multi -_scheme_apply_prim_closure -_scheme_apply_prim_closure_multi -scheme_current_argument_stack -scheme_call_with_prompt -scheme_call_with_prompt_multi -_scheme_call_with_prompt -_scheme_call_with_prompt_multi -scheme_values -scheme_check_one_value -scheme_tail_apply -scheme_tail_apply_no_copy -scheme_tail_apply_to_list -scheme_tail_eval_expr -scheme_set_tail_buffer_size -scheme_force_value -scheme_force_one_value -scheme_set_cont_mark -scheme_push_continuation_frame -scheme_pop_continuation_frame -scheme_temp_dec_mark_depth -scheme_temp_inc_mark_depth -scheme_current_continuation_marks -scheme_extract_one_cc_mark -scheme_extract_one_cc_mark_to_tag -scheme_do_eval -scheme_eval_compiled_stx_string -scheme_load_compiled_stx_string -scheme_compiled_stx_symbol -scheme_eval_compiled_sized_string -scheme_eval_compiled_sized_string_with_magic -scheme_detach_multple_array -GC_malloc -GC_malloc_atomic -GC_malloc_one_tagged -GC_malloc_atomic_uncollectable -scheme_malloc_uncollectable -GC_malloc_array_tagged -GC_malloc_allow_interior -GC_malloc_atomic_allow_interior -GC_malloc_tagged_allow_interior -scheme_malloc_code -scheme_free_code -scheme_malloc_gcable_code -scheme_malloc_eternal -scheme_end_stubborn_change -scheme_calloc -scheme_strdup -scheme_strdup_eternal -scheme_malloc_fail_ok -scheme_weak_reference -scheme_weak_reference_indirect -scheme_unweak_reference -scheme_add_finalizer -scheme_add_finalizer_once -scheme_subtract_finalizer -scheme_add_scheme_finalizer -scheme_add_scheme_finalizer_once -scheme_register_finalizer -scheme_remove_all_finalization -scheme_dont_gc_ptr -scheme_gc_ptr_ok -scheme_collect_garbage -GC_variable_stack -GC_register_traversers -GC_resolve -GC_mark -GC_fixup -GC_fixup_self -scheme_malloc_immobile_box -scheme_free_immobile_box -scheme_make_bucket_table -scheme_add_to_table -scheme_change_in_table -scheme_lookup_in_table -scheme_bucket_from_table -scheme_bucket_table_equal -scheme_clone_bucket_table -scheme_make_hash_table -scheme_make_hash_table_equal -scheme_make_hash_table_eqv -scheme_hash_set -scheme_hash_get -scheme_eq_hash_get -scheme_hash_set_atomic -scheme_hash_get_atomic -scheme_hash_table_equal -scheme_is_hash_table_equal -scheme_is_hash_table_eqv -scheme_clone_hash_table -scheme_make_hash_tree -scheme_hash_tree_set -scheme_hash_tree_get -scheme_hash_tree_next -scheme_hash_tree_index -scheme_hash_tree_equal -scheme_is_hash_tree_equal -scheme_is_hash_tree_eqv -scheme_make_prim -scheme_make_noneternal_prim -scheme_make_prim_w_arity -scheme_make_folding_prim -scheme_make_immed_prim -scheme_make_noncm_prim -scheme_make_noneternal_prim_w_arity -scheme_make_prim_w_everything -scheme_make_prim_closure_w_arity -scheme_make_folding_prim_closure -scheme_make_closed_prim -scheme_make_closed_prim_w_arity -scheme_make_folding_closed_prim -scheme_make_closed_prim_w_everything -scheme_prim_is_method -scheme_make_pair -scheme_make_mutable_pair -scheme_make_raw_pair -scheme_make_byte_string -scheme_make_sized_byte_string -scheme_make_sized_offset_byte_string -scheme_make_immutable_sized_byte_string -scheme_make_byte_string_without_copying -scheme_alloc_byte_string -scheme_append_byte_string -scheme_make_utf8_string -scheme_make_sized_utf8_string -scheme_make_sized_offset_utf8_string -scheme_make_immutable_sized_utf8_string -scheme_make_locale_string -scheme_char_string_to_byte_string -scheme_byte_string_to_char_string -scheme_char_string_to_byte_string_locale -scheme_byte_string_to_char_string_locale -scheme_char_string_to_path -scheme_path_to_char_string -scheme_make_char_string -scheme_make_sized_char_string -scheme_make_sized_offset_char_string -scheme_make_immutable_sized_char_string -scheme_make_char_string_without_copying -scheme_alloc_char_string -scheme_append_char_string -scheme_string_recase -scheme_make_vector -scheme_make_integer_value -scheme_make_integer_value_from_unsigned -scheme_make_integer_value_from_long_long -scheme_make_integer_value_from_unsigned_long_long -scheme_make_integer_value_from_long_halves -scheme_make_integer_value_from_unsigned_long_halves -scheme_make_double -scheme_make_char -scheme_make_char_or_nul -scheme_make_sema -scheme_post_sema -scheme_post_sema_all -scheme_wait_sema -scheme_try_plain_sema -scheme_char_constants -scheme_make_channel -scheme_make_channel_put_evt -scheme_get_int_val -scheme_get_unsigned_int_val -scheme_get_long_long_val -scheme_get_unsigned_long_long_val -scheme_real_to_double -scheme_make_cptr -scheme_make_offset_cptr -scheme_make_external_cptr -scheme_make_offset_external_cptr -scheme_get_proc_name -scheme_utf8_decode -scheme_utf8_decode_as_prefix -scheme_utf8_decode_all -scheme_utf8_decode_prefix -scheme_utf8_decode_to_buffer -scheme_utf8_decode_to_buffer_len -scheme_utf8_decode_count -scheme_utf8_encode -scheme_utf8_encode_all -scheme_utf8_encode_to_buffer -scheme_utf8_encode_to_buffer_len -scheme_ucs4_to_utf16 -scheme_utf16_to_ucs4 -scheme_open_converter -scheme_close_converter -scheme_make_bignum -scheme_make_bignum_from_unsigned -scheme_make_bignum_from_long_long -scheme_make_bignum_from_unsigned_long_long -scheme_bignum_to_double -scheme_bignum_from_double -scheme_bignum_to_string -scheme_bignum_to_allocated_string -scheme_read_bignum -scheme_read_bignum_bytes -scheme_bignum_normalize -scheme_make_rational -scheme_rational_to_double -scheme_rational_from_double -scheme_rational_normalize -scheme_rational_numerator -scheme_rational_denominator -scheme_make_complex -scheme_complex_normalize -scheme_complex_real_part -scheme_complex_imaginary_part -scheme_is_exact -scheme_is_inexact -scheme_expand -scheme_compile -scheme_read -scheme_read_syntax -scheme_write -scheme_print -scheme_display -scheme_write_w_max -scheme_display_w_max -scheme_print_w_max -scheme_write_byte_string -scheme_write_char_string -scheme_put_byte_string -scheme_put_char_string -scheme_write_to_string -scheme_display_to_string -scheme_print_to_string -scheme_write_to_string_w_max -scheme_display_to_string_w_max -scheme_print_to_string_w_max -scheme_debug_print -scheme_flush_output -scheme_format -scheme_printf -scheme_format_utf8 -scheme_printf_utf8 -scheme_getc -scheme_get_byte -scheme_peekc -scheme_peek_byte -scheme_peekc_skip -scheme_peek_byte_skip -scheme_getc_special_ok -scheme_get_byte_special_ok -scheme_peekc_special_ok -scheme_peek_byte_special_ok_skip -scheme_peekc_special_ok_skip -scheme_ungetc -scheme_byte_ready -scheme_char_ready -scheme_peekc_is_ungetc -scheme_need_wakeup -scheme_get_byte_string -scheme_get_byte_string_unless -scheme_get_byte_string_special_ok_unless -scheme_progress_evt -scheme_peeked_read -scheme_get_char_string -scheme_get_bytes -scheme_get_ready_special -scheme_tell -scheme_output_tell -scheme_tell_line -scheme_tell_column -scheme_tell_all -scheme_count_lines -scheme_close_input_port -scheme_close_output_port -scheme_write_special -scheme_write_special_nonblock -scheme_make_write_evt -scheme_port_record -scheme_input_port_record -scheme_output_port_record -scheme_is_input_port -scheme_is_output_port -scheme_make_port_type -scheme_make_input_port -scheme_make_output_port -scheme_set_next_port_custodian -scheme_set_port_location_fun -scheme_set_port_count_lines_fun -scheme_progress_evt_via_get -scheme_peeked_read_via_get -scheme_write_evt_via_write -scheme_write_special_evt_via_write_special -scheme_open_input_file -scheme_open_output_file -scheme_open_input_output_file -scheme_open_output_file_with_mode -scheme_make_file_input_port -scheme_make_named_file_input_port -scheme_make_file_output_port -scheme_make_fd_input_port -scheme_make_fd_output_port -scheme_make_byte_string_input_port -scheme_make_sized_byte_string_input_port -scheme_make_byte_string_output_port -scheme_get_sized_byte_string_output -scheme_get_reset_sized_byte_string_output -scheme_pipe -scheme_pipe_with_limit -scheme_make_null_output_port -scheme_make_redirect_output_port -scheme_set_file_position -scheme_file_exists -scheme_directory_exists -scheme_expand_filename -scheme_expand_user_filename -scheme_expand_string_filename -scheme_os_getcwd -scheme_os_setcwd -scheme_getdrive -scheme_split_path -scheme_build_path -scheme_path_to_directory_path -scheme_path_to_complete_path -scheme_make_path -scheme_make_sized_path -scheme_make_sized_offset_path -scheme_make_sized_offset_kind_path -scheme_make_path_without_copying -scheme_alloc_fdset_array -scheme_init_fdset_array -scheme_get_fdset -scheme_fdzero -scheme_fdset -scheme_fdclr -scheme_fdisset -scheme_add_fd_handle -scheme_add_fd_eventmask -scheme_collapse_win_fd -scheme_security_check_file -scheme_security_check_file_link -scheme_security_check_network -scheme_get_host_address -scheme_free_host_address -scheme_host_address_strerror -scheme_getnameinfo -scheme_get_port_file_descriptor -scheme_get_port_fd -scheme_get_port_socket -scheme_socket_to_ports -scheme_set_type_printer -scheme_print_bytes -scheme_print_utf8 -scheme_print_string -scheme_read_byte_string -scheme_make_namespace -scheme_add_global -scheme_add_global_symbol -scheme_make_envunbox -scheme_lookup_global -scheme_global_bucket -scheme_global_keyword_bucket -scheme_module_bucket -scheme_builtin_value -scheme_set_global_bucket -scheme_install_macro -scheme_save_initial_module_set -scheme_primitive_module -scheme_finish_primitive_module -scheme_protect_primitive_provide -scheme_make_modidx -scheme_apply_for_syntax_in_env -scheme_dynamic_require -scheme_namespace_require -scheme_is_module_path -scheme_datum_to_kernel_stx -scheme_intern_symbol -scheme_intern_exact_symbol -scheme_intern_exact_char_symbol -scheme_make_symbol -scheme_make_exact_symbol -scheme_make_exact_char_symbol -scheme_symbol_name -scheme_symbol_name_and_size -scheme_symbol_val -scheme_intern_exact_keyword -scheme_intern_exact_char_keyword -scheme_make_struct_values -scheme_make_struct_names -scheme_make_struct_type -scheme_make_struct_type2 -scheme_make_struct_instance -scheme_is_struct_instance -scheme_struct_ref -scheme_struct_set -scheme_make_struct_type_property -scheme_make_struct_type_property_w_guard -scheme_struct_type_property_ref -scheme_chaperone_struct_type_property_ref -scheme_make_location -scheme_is_location -scheme_make_inspector -scheme_is_subinspector -scheme_eq -scheme_eqv -scheme_equal -scheme_chaperone_of -scheme_hash_key -scheme_equal_hash_key -scheme_equal_hash_key2 -scheme_recur_equal_hash_key -scheme_recur_equal_hash_key2 -scheme_eqv_hash_key -scheme_eqv_hash_key2 -scheme_set_type_equality -scheme_recur_equal -scheme_build_list -scheme_build_list_offset -scheme_is_list -scheme_list_length -scheme_proper_list_length -scheme_alloc_list -scheme_map_1 -scheme_car -scheme_cdr -scheme_cadr -scheme_caddr -scheme_vector_to_list -scheme_list_to_vector -scheme_append -scheme_reverse -scheme_box -scheme_unbox -scheme_set_box -scheme_make_weak_box -scheme_make_ephemeron -scheme_ephemeron_value -scheme_ephemeron_key -scheme_load -scheme_load_extension -scheme_register_extension_global -scheme_get_seconds -scheme_get_milliseconds -scheme_get_inexact_milliseconds -scheme_get_process_milliseconds -scheme_get_thread_milliseconds -scheme_banner -scheme_version -scheme_check_proc_arity -scheme_check_proc_arity2 -scheme_make_provided_string -scheme_make_args_string -scheme_system_library_subpath -scheme_signal_received -scheme_signal_received_at -scheme_get_signal_handle -scheme_char_strlen diff --git a/racket/src/include/racket_version.h b/racket/src/include/racket_version.h deleted file mode 100644 index e4e5378d62..0000000000 --- a/racket/src/include/racket_version.h +++ /dev/null @@ -1,36 +0,0 @@ - -/* The version string has one of the forms: - X.Y - X.Y.Z Z != 0 - X.Y.Z.W W != 0 - where each X, Y, Z, W is a non-negative exact integer, Y must not - exceed 99, and Z or W must not exceed 999. Y>=90 means that this is - working towards {X+1}.0, and X.Y (Z=0, W=0) is an alpha version for - {X+1}.0; Z>=900 means working towards X.{Y+1}, and X.Y.Z as an - alpha release. - - Note that the version number in the "base" package's "info.rkt" - needs to be updated separately. -*/ - -#define MZSCHEME_VERSION_X 7 -#define MZSCHEME_VERSION_Y 8 -#define MZSCHEME_VERSION_Z 0 -#define MZSCHEME_VERSION_W 6 - -/* A level of indirection makes `#` work as needed: */ -#define AS_a_STR_HELPER(x) #x -#define AS_a_STR(x) AS_a_STR_HELPER(x) - -#if MZSCHEME_VERSION_W != 0 -# define MZSCHEME_VERSION AS_a_STR(MZSCHEME_VERSION_X) "." AS_a_STR(MZSCHEME_VERSION_Y) "." AS_a_STR(MZSCHEME_VERSION_Z) "." AS_a_STR(MZSCHEME_VERSION_W) -#elif MZSCHEME_VERSION_Z != 0 -# define MZSCHEME_VERSION AS_a_STR(MZSCHEME_VERSION_X) "." AS_a_STR(MZSCHEME_VERSION_Y) "." AS_a_STR(MZSCHEME_VERSION_Z) -#else -# define MZSCHEME_VERSION AS_a_STR(MZSCHEME_VERSION_X) "." AS_a_STR(MZSCHEME_VERSION_Y) -#endif - -#define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y) -#define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W) - -#define MZSCHEME_VM "racket" diff --git a/racket/src/include/scheme.h b/racket/src/include/scheme.h deleted file mode 100644 index 23f15aca36..0000000000 --- a/racket/src/include/scheme.h +++ /dev/null @@ -1,2134 +0,0 @@ -#ifndef SCHEME_H -#define SCHEME_H - -/* The next line is used and set during installation: */ -#define INCLUDE_WITHOUT_PATHS - -/*========================================================================*/ -/* configuration */ -/*========================================================================*/ - -/* The configuration is not intended to be adjusted here. Instead, - modify sconfig.h. The code below simply draws a few more - configuration conclusions and a few extra macros based on those - settings. */ - -#ifdef INCLUDE_WITHOUT_PATHS -# include "sconfig.h" -#else -# include "../sconfig.h" -#endif - -#if defined(__MWERKS__) -# ifdef MZSCHEME_USES_NEAR_GLOBALS -# pragma far_data off -# endif -#endif - -#if SGC_STD_DEBUGGING -# ifndef USE_SENORA_GC -# define USE_SENORA_GC -# endif -# define USE_MEMORY_TRACING -#endif - -#ifdef MZ_PRECISE_GC -# define MUST_REGISTER_GLOBALS -# define MZTAG_REQUIRED -/* In case SGC is used to build PRECISE_GC: */ -# undef USE_SENORA_GC -#endif - -#ifdef USE_SENORA_GC -# define MUST_REGISTER_GLOBALS -#endif - -#ifdef USE_SINGLE_FLOATS -# define MZ_USE_SINGLE_FLOATS -#endif - -/* gcc defines __SSE2_MATH__ when SSE2 floating point is enabled: */ -#ifdef __SSE2_MATH__ -# define C_COMPILER_USES_SSE 1 -#endif - -#ifdef C_COMPILER_USES_SSE -# if defined(MZ_TRY_EXTFLONUMS) && !defined(MZ_NO_EXTFLONUMS) -# define MZ_LONG_DOUBLE -# ifdef ASM_DBLPREC_CONTROL_87 -# define ASM_EXTPREC_CONTROL_87 -# endif -# endif -# ifdef ASM_DBLPREC_CONTROL_87 -# undef ASM_DBLPREC_CONTROL_87 -# endif -# if defined(MZ_USE_JIT_I386) && !defined(MZ_NO_JIT_SSE) -# define MZ_USE_JIT_SSE -# endif -#endif - -#ifdef MZ_LONG_DOUBLE -# ifdef MZ_LONG_DOUBLE_API_IS_EXTERNAL -# define BYTES_RESERVED_FOR_LONG_DOUBLE 16 -typedef struct { - char bytes[BYTES_RESERVED_FOR_LONG_DOUBLE]; -} mz_long_double; -# else -typedef long double mz_long_double; -# endif -#else -# ifdef MZ_INSIST_EXTFLONUMS -# error "cannot support extflonums; you may need to adjust compiler options" -# endif -typedef double mz_long_double; -#endif - -#ifdef DONT_ITIMER -# undef USE_ITIMER -#endif - -#if defined(USE_ITIMER) || defined(USE_WIN32_THREAD_TIMER) || defined(USE_PTHREAD_THREAD_TIMER) -# define FUEL_AUTODECEREMENTS -#endif - -#ifdef SIZEOF_VOID_P -# if SIZEOF_VOID_P == 8 -# define SIXTY_FOUR_BIT_INTEGERS -# ifdef USE_LONG_LONG_FOR_BIGDIG - Do not specify USE_LONG_LONG_FOR_BIGDIG on a platform with - 64-bit integers -# endif -# endif -#endif - -#ifdef SIZEOF_LONG -# if SIZEOF_LONG == 8 -# define SIXTY_FOUR_BIT_LONGS -# endif -#endif - -#ifdef MZ_PRECISE_GC -# define MZ_HASH_KEY_EX short keyex; -# define MZ_OPT_HASH_KEY_EX /**/ -# define MZ_OPT_HASH_KEY(obj) (obj)->so.keyex -#else -# define MZ_HASH_KEY_EX /**/ -# define MZ_OPT_HASH_KEY_EX short keyex; -# define MZ_OPT_HASH_KEY(obj) (obj)->keyex -#endif - -#ifdef PALMOS_STUFF -# include -typedef long FILE; -# define _LINUX_TYPES_H /* Blocks types.h */ -#endif - -#ifndef SCHEME_DIRECT_EMBEDDED -# define SCHEME_DIRECT_EMBEDDED 1 -#endif - -#ifndef MSC_IZE -# define MSC_IZE(x) x -#endif -#ifndef M_MSC_IZE -# define M_MSC_IZE(x) x -#endif -#ifndef MSCBOR_IZE -# define MSCBOR_IZE(x) MSC_IZE(x) -#endif - -/* C99 allows an array in a struct to be declared - with [] to indicate that its actual size can be - any number. The old way was to declare the array - of size 1. For now, we support going back to the - old way. */ -#ifdef MZ_USE_OLD_ARRAY_STYLE -# define mzFLEX_ARRAY_DECL 1 -# define mzFLEX_ARRAY4_DECL 4 -# define mzFLEX_DELTA 1 -# define mzFLEX4_DELTA 4 -#else -# define mzFLEX_ARRAY_DECL /* empty */ -# define mzFLEX_ARRAY4_DECL /* empty */ -# define mzFLEX_DELTA 0 -# define mzFLEX4_DELTA 0 -#endif - -#ifdef MZ_XFORM -/* A non-GCing function will never trigger a garbage collection. - The xform tool checks this declaration, and it uses this hint - to avoid registering variables unnecessarily. */ -# define XFORM_NONGCING __xform_nongcing__ -/* A non-GCing, non-aliasing function is non-GCing, and it may take - arguments that are addresses of local variables, but it doesn't - leak those addresses; it only filles them in. The xform tool only - checks the non-GCing part of this declaration, but uses both - facets of the hint. */ -# define XFORM_NONGCING_NONALIASING __xform_nongcing_nonaliasing__ -#else -# define XFORM_NONGCING /* empty */ -# define XFORM_NONGCING_NONALIASING /* empty */ -#endif - -#ifdef MZ_XFORM -START_XFORM_SUSPEND; -#endif - -#include -#include -#include -#include -#include -#include - -#ifdef MZ_XFORM -END_XFORM_SUSPEND; -#endif - -#ifdef PALMOS_STUFF -typedef jmpbuf jmp_buf[1]; -#endif - -#define GC_MIGHT_USE_REGISTERED_STATICS - -#ifndef MZ_DONT_USE_JIT -# if defined(MZ_USE_JIT_PPC) || defined(MZ_USE_JIT_I386) || defined(MZ_USE_JIT_X86_64) || defined(MZ_USE_JIT_ARM) -# define MZ_USE_JIT -# endif -#endif - -/* Define _W64 for MSC if needed. */ -#if defined(_MSC_VER) && !defined(_W64) -# if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300 -# define _W64 __w64 -# else -# define _W64 -# endif -#endif - -#ifdef MZ_PRECISE_GC -# ifndef MZ_XFORM -# define XFORM_SKIP_PROC /* empty */ -# define XFORM_ASSERT_NO_CONVERSION /* empty */ -# define XFORM_CAN_IGNORE /**/ -# endif -#else -# define XFORM_HIDE_EXPR(x) x -# define XFORM_START_SKIP /**/ -# define XFORM_END_SKIP /**/ -# define XFORM_START_SUSPEND /**/ -# define XFORM_END_SUSPEND /**/ -# define XFORM_SKIP_PROC /**/ -# define XFORM_ASSERT_NO_CONVERSION /**/ -# define XFORM_START_TRUST_ARITH /**/ -# define XFORM_END_TRUST_ARITH /**/ -# define XFORM_CAN_IGNORE /**/ -# define XFORM_TRUST_PLUS + -# define XFORM_TRUST_MINUS - -#endif - -/* PPC Linux plays a slimy trick: it defines strcpy() as a macro that - uses __extension__. This breaks the 3m xform. */ -#if defined(MZ_XFORM) && defined(strcpy) -START_XFORM_SKIP; -# ifdef __clang__ -# pragma clang diagnostic push -# pragma clang diagnostic ignored "-Wunused-function" -# endif -static inline void _mzstrcpy(char *a, const char *b) -{ - strcpy(a, b); -} -# ifdef __clang__ -# pragma clang diagnostic pop -# endif -END_XFORM_SKIP; -# undef strcpy -# define strcpy _mzstrcpy -#endif - -#ifdef __cplusplus -extern "C" -{ -#endif - -#if !defined(MZ_NORETURN) -# if !defined(MZ_PRECISE_RETURN_SPEC) -# define MZ_NORETURN -# elif defined(__GNUC__) || defined(__clang__) -# define MZ_NORETURN __attribute__((noreturn)) -# elif defined(_MSC_VER) -# define MZ_NORETURN __declspec(noreturn) -# else -# define MZ_NORETURN -# endif /* defined(__GNUC__) || defined(__clang__) */ -#endif /* !defined(MZ_NORETURN) */ - -#if !defined(MZ_UNREACHABLE) -# if (defined(__GNUC__) && (__GNUC__ > 4)) || defined(__clang__) -# define MZ_UNREACHABLE __builtin_unreachable() -# elif defined(_MSC_VER) -# define MZ_UNREACHABLE __assume(0) -# else -# define MZ_UNREACHABLE -# endif /* defined(__GNUC__) || defined(__clang__) */ -#endif /* !defined(MZ_UNREACHABLE) */ - -/* Allowed by all configurations, currently: */ -#define MZ_CAN_ACCESS_THREAD_LOCAL_DIRECTLY - -/*========================================================================*/ -/* basic Scheme values */ -/*========================================================================*/ - -typedef short Scheme_Type; - -typedef int mzshort; - -typedef unsigned int mzchar; -typedef int mzchar_int; /* includes EOF */ - -#ifdef INT64_AS_LONG_LONG -typedef _int64 mzlonglong; -typedef unsigned _int64 umzlonglong; -#else -# if defined(NO_LONG_LONG_TYPE) || defined(SIXTY_FOUR_BIT_INTEGERS) -typedef intptr_t mzlonglong; -typedef uintptr_t umzlonglong; -# else -typedef long long mzlonglong; -typedef unsigned long long umzlonglong; -# endif -#endif - -/* Racket values have the type `Scheme_Object *'. The Scheme_Object - structure declares just the header: a type tag and space for - hashing or extra flags; actual object types will extend this - structure. - - For example, Scheme_Simple_Object defines a few variants. The - important thing is that it starts with a nested Scheme_Object - record. - - The Scheme_Simple_Object struct is defined here, instead of in a - private header, so that macros can provide quick access. Of course, - don't access the fields of these structures directly; use the - macros instead. */ - -typedef struct Scheme_Object -{ - Scheme_Type type; /* Anything that starts with a type field - can be a Scheme_Object */ - - /* For precise GC, the keyex field is used for all object types to - store a hash key extension. The low bit is not used for this - purpose, though. For string, pair, vector, and box values in all - variants of Racket, the low bit is set to 1 to indicate that - the object is immutable. Thus, the keyex field is needed even in - non-precise GC mode, so such structures embed - Scheme_Inclhash_Object */ - - MZ_HASH_KEY_EX -} Scheme_Object; - - /* See note above on MZ_HASH_KEY_EX. To get the keyex field, - use MZ_OPT_HASH_KEY(iso), where iso is a pointer to a - Scheme_Inclhash_Object */ -typedef struct Scheme_Inclhash_Object -{ - Scheme_Object so; - MZ_OPT_HASH_KEY_EX -} Scheme_Inclhash_Object; - -typedef struct Scheme_Simple_Object -{ - Scheme_Inclhash_Object iso; - - union - { - struct { mzchar *string_val; intptr_t tag_val; } char_str_val; - struct { char *string_val; intptr_t tag_val; } byte_str_val; - struct { void *ptr1, *ptr2; } two_ptr_val; - struct { int int1; int int2; } two_int_val; - struct { void *ptr; int pint; } ptr_int_val; - struct { void *ptr; intptr_t pint; } ptr_long_val; - struct { struct Scheme_Object *car, *cdr; } pair_val; - struct { mzshort len; mzshort *vec; } svector_val; - struct { void *val; Scheme_Object *type; } cptr_val; - } u; -} Scheme_Simple_Object; - -typedef struct Scheme_Object *(*Scheme_Closure_Func)(struct Scheme_Object *); - -/* Scheme_Small_Object is used for several types of Racket values: */ -typedef struct { - Scheme_Inclhash_Object iso; - union { - mzchar char_val; - Scheme_Object *ptr_value; - intptr_t int_val; - Scheme_Object *ptr_val; - } u; -} Scheme_Small_Object; - -/* A floating-point number: */ -typedef struct { - Scheme_Object so; - double double_val; -} Scheme_Double; - -#ifdef MZ_LONG_DOUBLE -typedef struct { - Scheme_Object so; - mz_long_double long_double_val; -} Scheme_Long_Double; -#else -typedef struct { - Scheme_Object so; - const char *printed_form; -} Scheme_Long_Double; -#endif - -#ifdef MZ_USE_SINGLE_FLOATS -typedef struct { - Scheme_Object so; - float float_val; -} Scheme_Float; -#endif - -typedef struct Scheme_Symbol { - Scheme_Inclhash_Object iso; /* 1 in low bit of keyex indicates uninterned */ - intptr_t len; - char s[mzFLEX_ARRAY4_DECL]; -} Scheme_Symbol; - -typedef struct Scheme_Vector { - Scheme_Inclhash_Object iso; /* 1 in low bit of keyex indicates immutable */ - intptr_t size; - Scheme_Object *els[mzFLEX_ARRAY_DECL]; -} Scheme_Vector; - -# define SHARED_ALLOCATED 0x2 -# define SHARED_ALLOCATEDP(so) (MZ_OPT_HASH_KEY((Scheme_Inclhash_Object *)(so)) & SHARED_ALLOCATED) -# define SHARED_ALLOCATED_SET(so) (MZ_OPT_HASH_KEY((Scheme_Inclhash_Object *)(so)) |= SHARED_ALLOCATED) - -typedef struct Scheme_Double_Vector { - Scheme_Inclhash_Object iso; /* & 0x2 indicates allocated in the MASTERGC */ - intptr_t size; - double els[mzFLEX_ARRAY_DECL]; -} Scheme_Double_Vector; - -#ifdef MZ_LONG_DOUBLE -typedef struct Scheme_Long_Double_Vector { - Scheme_Inclhash_Object iso; /* & 0x2 indicates allocated in the MASTERGC */ - intptr_t size; - mz_long_double els[mzFLEX_ARRAY_DECL]; -} Scheme_Long_Double_Vector; -#endif - -typedef struct Scheme_Print_Params Scheme_Print_Params; -typedef void (*Scheme_Type_Printer)(Scheme_Object *v, int for_display, Scheme_Print_Params *pp); - -typedef int (*Scheme_Equal_Proc)(Scheme_Object *obj1, Scheme_Object *obj2, void *cycle_data); -typedef intptr_t (*Scheme_Primary_Hash_Proc)(Scheme_Object *obj, intptr_t base, void *cycle_data); -typedef intptr_t (*Scheme_Secondary_Hash_Proc)(Scheme_Object *obj, void *cycle_data); - -/* This file defines all the built-in types */ -#ifdef INCLUDE_WITHOUT_PATHS -# include "stypes.h" -#else -# include "../src/stypes.h" -#endif - -#define OBJ_TO_LONG(ptr) ((intptr_t)(ptr)) -#define LONG_TO_OBJ(l) ((Scheme_Object *)(void *)(intptr_t)(l)) - -/* Scheme Objects are always aligned on 2-byte boundaries, so */ -/* words of type Scheme_Object * will always have zero in the */ -/* least significant bit. Therefore, we can use this bit as a */ -/* tag to indicate that the `pointer' isn't really a pointer */ -/* but a 31-bit signed immediate integer. */ - -#define SCHEME_INTP(obj) (OBJ_TO_LONG(obj) & 0x1) - -#define SAME_PTR(a, b) ((a) == (b)) -#define NOT_SAME_PTR(a, b) ((a) != (b)) - -#define SAME_OBJ(a, b) SAME_PTR(a, b) -#define NOT_SAME_OBJ(a, b) NOT_SAME_PTR(a, b) - -#define SAME_TYPE(a, b) ((Scheme_Type)(a) == (Scheme_Type)(b)) -#define NOT_SAME_TYPE(a, b) ((Scheme_Type)(a) != (Scheme_Type)(b)) - -# define SCHEME_TYPE(obj) (SCHEME_INTP(obj)?(Scheme_Type)scheme_integer_type:((Scheme_Object *)(obj))->type) -# define _SCHEME_TYPE(obj) ((obj)->type) /* unsafe version */ - -/*========================================================================*/ -/* basic Scheme predicates */ -/*========================================================================*/ - -#define SCHEME_CHARP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_char_type) -/* SCHEME_INTP defined above */ -#define SCHEME_DBLP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_double_type) -#ifdef MZ_USE_SINGLE_FLOATS -# define SCHEME_FLTP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_float_type) -# define SCHEME_FLOATP(obj) (SCHEME_FLTP(obj) || SCHEME_DBLP(obj)) -#else -# define SCHEME_FLTP SCHEME_DBLP -# define SCHEME_FLOATP SCHEME_DBLP -#endif -#define SCHEME_BIGNUMP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_bignum_type) -#define SCHEME_RATIONALP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_rational_type) -#define SCHEME_COMPLEXP(obj) (!SCHEME_INTP(obj) && ((_SCHEME_TYPE(obj) == scheme_complex_type))) -#define SCHEME_EXACT_INTEGERP(obj) (SCHEME_INTP(obj) || (_SCHEME_TYPE(obj) == scheme_bignum_type)) -#define SCHEME_EXACT_REALP(obj) (SCHEME_INTP(obj) || (_SCHEME_TYPE(obj) == scheme_bignum_type) || (_SCHEME_TYPE(obj) == scheme_rational_type)) -#define SCHEME_REALP(obj) (SCHEME_INTP(obj) || ((_SCHEME_TYPE(obj) >= scheme_bignum_type) && (_SCHEME_TYPE(obj) < scheme_complex_type))) -#define SCHEME_NUMBERP(obj) (SCHEME_INTP(obj) || ((_SCHEME_TYPE(obj) >= scheme_bignum_type) && (_SCHEME_TYPE(obj) <= scheme_complex_type))) - -#define SCHEME_LONG_DBLP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_long_double_type) - -#define SCHEME_CHAR_STRINGP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_char_string_type) -#define SCHEME_MUTABLE_CHAR_STRINGP(obj) (SCHEME_CHAR_STRINGP(obj) && SCHEME_MUTABLEP(obj)) -#define SCHEME_IMMUTABLE_CHAR_STRINGP(obj) (SCHEME_CHAR_STRINGP(obj) && SCHEME_IMMUTABLEP(obj)) - -#define SCHEME_BYTE_STRINGP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_byte_string_type) -#define SCHEME_MUTABLE_BYTE_STRINGP(obj) (SCHEME_BYTE_STRINGP(obj) && SCHEME_MUTABLEP(obj)) -#define SCHEME_IMMUTABLE_BYTE_STRINGP(obj) (SCHEME_BYTE_STRINGP(obj) && SCHEME_IMMUTABLEP(obj)) - -#define SCHEME_PATHP(obj) SAME_TYPE(SCHEME_TYPE(obj), SCHEME_PLATFORM_PATH_KIND) -#define SCHEME_GENERAL_PATHP(obj) ((SCHEME_TYPE(obj) >= scheme_unix_path_type) && (SCHEME_TYPE(obj) <= scheme_windows_path_type)) - /* A path is guaranteed to have the same shape as a byte string */ - -#define SCHEME_PATH_STRINGP(x) (SCHEME_CHAR_STRINGP(x) || SCHEME_PATHP(x)) -#define SCHEME_PATH_STRING_STR "path or string" - -#define SCHEME_GENERAL_PATH_STRINGP(x) (SCHEME_CHAR_STRINGP(x) || SCHEME_GENERAL_PATHP(x)) -#define SCHEME_GENERAL_PATH_STRING_STR "path (for any platform) or string" - -#define SCHEME_SYMBOLP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_symbol_type) -#define SCHEME_KEYWORDP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_keyword_type) - -#define SCHEME_STRSYMP(obj) (SCHEME_CHAR_STRINGP(obj) || SCHEME_SYMBOLP(obj)) - -#define SCHEME_BOOLP(obj) (SAME_OBJ(obj, scheme_true) || SAME_OBJ(obj, scheme_false)) -#define SCHEME_FALSEP(obj) SAME_OBJ((obj), scheme_false) -#define SCHEME_TRUEP(obj) (!SCHEME_FALSEP(obj)) -#define SCHEME_EOFP(obj) SAME_OBJ((obj), scheme_eof) -#define SCHEME_VOIDP(obj) SAME_OBJ((obj), scheme_void) - -#define SCHEME_NULLP(obj) SAME_OBJ(obj, scheme_null) -#define SCHEME_PAIRP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_pair_type) -#define SCHEME_MPAIRP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_mutable_pair_type) -#define SCHEME_MUTABLE_PAIRP(obj) SCHEME_MPAIRP(obj) -#define SCHEME_LISTP(obj) scheme_is_list(obj) - -#define SCHEME_RPAIRP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_raw_pair_type) - -#define SCHEME_BOXP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_box_type) -#define SCHEME_MUTABLE_BOXP(obj) (SCHEME_BOXP(obj) && SCHEME_MUTABLEP(obj)) -#define SCHEME_IMMUTABLE_BOXP(obj) (SCHEME_BOXP(obj) && SCHEME_IMMUTABLEP(obj)) - -#define SCHEME_PROMPT_TAGP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_prompt_tag_type) -#define SCHEME_CONTINUATION_MARK_KEYP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_continuation_mark_key_type) - -#define SCHEME_BUCKTP(obj) SAME_TYPE(SCHEME_TYPE(obj),scheme_bucket_table_type) -#define SCHEME_HASHTP(obj) SAME_TYPE(SCHEME_TYPE(obj),scheme_hash_table_type) -#define SCHEME_HASHTRP(obj) ((SCHEME_TYPE(obj) >= scheme_hash_tree_type) && (SCHEME_TYPE(obj) <= scheme_hash_tree_indirection_type)) - -#define SCHEME_VECTORP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_vector_type) -#define SCHEME_MUTABLE_VECTORP(obj) (SCHEME_VECTORP(obj) && SCHEME_MUTABLEP(obj)) -#define SCHEME_IMMUTABLE_VECTORP(obj) (SCHEME_VECTORP(obj) && SCHEME_IMMUTABLEP(obj)) - -#define SCHEME_FLVECTORP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_flvector_type) -#define SCHEME_EXTFLVECTORP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_extflvector_type) -#define SCHEME_FXVECTORP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_fxvector_type) - -#define SCHEME_STRUCTP(obj) (SAME_TYPE(SCHEME_TYPE(obj), scheme_structure_type) || SAME_TYPE(SCHEME_TYPE(obj), scheme_proc_struct_type)) -#define SCHEME_STRUCT_TYPEP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_struct_type_type) - -#define SCHEME_INPORTP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_input_port_type) -#define SCHEME_OUTPORTP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_output_port_type) - -#define SCHEME_INPUT_PORTP(obj) scheme_is_input_port(obj) -#define SCHEME_OUTPUT_PORTP(obj) scheme_is_output_port(obj) - -#define SCHEME_THREADP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_thread_type) -#define SCHEME_CUSTODIANP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_custodian_type) -#define SCHEME_PLUMBERP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_plumber_type) -#define SCHEME_SEMAP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_sema_type) -#define SCHEME_CHANNELP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_channel_type) -#define SCHEME_CHANNEL_PUTP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_channel_put_type) - -#define SCHEME_CONFIGP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_config_type) -#define SCHEME_NAMESPACEP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_namespace_type) -#define SCHEME_WEAKP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_weak_box_type) - -#define SCHEME_STXP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_stx_type) - -#define SCHEME_CHAPERONEP(obj) (SAME_TYPE(SCHEME_TYPE(obj), scheme_chaperone_type) \ - || SAME_TYPE(SCHEME_TYPE(obj), scheme_proc_chaperone_type)) - -#define SCHEME_UDPP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_udp_type) -#define SCHEME_UDP_EVTP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_udp_evt_type) - -#define SCHEME_CPTRP(obj) (SAME_TYPE(SCHEME_TYPE(obj), scheme_cpointer_type)) - -#define SCHEME_MUTABLEP(obj) (!(MZ_OPT_HASH_KEY((Scheme_Inclhash_Object *)(obj)) & 0x1)) -#define SCHEME_IMMUTABLEP(obj) (MZ_OPT_HASH_KEY((Scheme_Inclhash_Object *)(obj)) & 0x1) - -#define GUARANTEE_TYPE(fname, argnum, typepred, typenam) \ - (typepred (argv [argnum]) \ - ? argv [argnum] \ - : (scheme_wrong_type (fname, typenam, argnum, argc, argv), argv [argnum])) - -#define GUARANTEE_BOOL(fname, argnum) GUARANTEE_TYPE (fname, argnum, SCHEME_BOOLP, "boolean") -#define GUARANTEE_CHAR(fname, argnum) GUARANTEE_TYPE (fname, argnum, SCHEME_CHARP, "character") -#define GUARANTEE_INTEGER(fname, argnum) GUARANTEE_TYPE (fname, argnum, SCHEME_INTP, "integer") -#define GUARANTEE_PAIR(fname, argnum) GUARANTEE_TYPE (fname, argnum, SCHEME_PAIRP, "pair") -#define GUARANTEE_PROCEDURE(fname, argnum) GUARANTEE_TYPE (fname, argnum, SCHEME_PROCP, "procedure") -#define GUARANTEE_CHAR_STRING(fname, argnum) GUARANTEE_TYPE (fname, argnum, SCHEME_CHAR_STRINGP, "string") -#define GUARANTEE_STRSYM(fname, argnum) GUARANTEE_TYPE (fname, argnum, SCHEME_STRSYMP, "string or symbol") -#define GUARANTEE_SYMBOL(fname, argnum) GUARANTEE_TYPE (fname, argnum, SCHEME_SYMBOLP, "symbol") - -#define SCHEME_UNIX_PATH_KIND scheme_unix_path_type -#define SCHEME_WINDOWS_PATH_KIND scheme_windows_path_type - -#ifdef DOS_FILE_SYSTEM -# define SCHEME_PLATFORM_PATH_KIND SCHEME_WINDOWS_PATH_KIND -#else -# define SCHEME_PLATFORM_PATH_KIND SCHEME_UNIX_PATH_KIND -#endif - -#define SCHEME_PATH_KIND(p) SCHEME_TYPE(p) - -/*========================================================================*/ -/* basic Scheme accessors */ -/*========================================================================*/ - -#define SCHEME_CHAR_VAL(obj) (((Scheme_Small_Object *)(obj))->u.char_val) -#define SCHEME_INT_VAL(obj) (OBJ_TO_LONG(obj)>>1) -#define SCHEME_DBL_VAL(obj) (((Scheme_Double *)(obj))->double_val) -#ifdef MZ_LONG_DOUBLE -#define SCHEME_LONG_DBL_VAL(obj) (((Scheme_Long_Double *)(obj))->long_double_val) -#endif -#ifdef MZ_USE_SINGLE_FLOATS -# define SCHEME_FLT_VAL(obj) (((Scheme_Float *)(obj))->float_val) -# define SCHEME_FLOAT_VAL(obj) (SCHEME_DBLP(obj) ? SCHEME_DBL_VAL(obj) : SCHEME_FLT_VAL(obj)) -#else -# define SCHEME_FLT_VAL(x) ((float)(SCHEME_DBL_VAL(x))) -# define SCHEME_FLOAT_VAL SCHEME_DBL_VAL -# define scheme_make_float(x) scheme_make_double((double)x) -#endif - -#define SCHEME_CHAR_STR_VAL(obj) (((Scheme_Simple_Object *)(obj))->u.char_str_val.string_val) -#define SCHEME_CHAR_STRTAG_VAL(obj) (((Scheme_Simple_Object *)(obj))->u.char_str_val.tag_val) -#define SCHEME_CHAR_STRLEN_VAL(obj) (((Scheme_Simple_Object *)(obj))->u.char_str_val.tag_val) -#define SCHEME_BYTE_STR_VAL(obj) (((Scheme_Simple_Object *)(obj))->u.byte_str_val.string_val) -#define SCHEME_BYTE_STRTAG_VAL(obj) (((Scheme_Simple_Object *)(obj))->u.byte_str_val.tag_val) -#define SCHEME_BYTE_STRLEN_VAL(obj) (((Scheme_Simple_Object *)(obj))->u.byte_str_val.tag_val) -#define SCHEME_PATH_VAL(obj) (((Scheme_Simple_Object *)(obj))->u.byte_str_val.string_val) -#define SCHEME_PATH_LEN(obj) (((Scheme_Simple_Object *)(obj))->u.byte_str_val.tag_val) -#define SCHEME_SYM_VAL(obj) (((Scheme_Symbol *)((Scheme_Simple_Object *)(obj)))->s) -#define SCHEME_SYM_LEN(obj) (((Scheme_Symbol *)((Scheme_Simple_Object *)(obj)))->len) -#define SCHEME_KEYWORD_VAL(obj) SCHEME_SYM_VAL(obj) -#define SCHEME_KEYWORD_LEN(obj) SCHEME_SYM_LEN(obj) - -#define SCHEME_SYMSTR_OFFSET(obj) ((uintptr_t)SCHEME_SYM_VAL(obj)-(uintptr_t)(obj)) - -/* return a `char *' pointing to the string or the symbol name */ -#define SCHEME_STRSYM_VAL(obj) (SCHEME_SYMBOLP(obj) ? SCHEME_SYM_VAL(obj) : SCHEME_CHAR_STR_VAL(obj)) - -#define SCHEME_BOX_VAL(obj) (((Scheme_Small_Object *)(obj))->u.ptr_val) - -#define SCHEME_CAR(obj) (((Scheme_Simple_Object *)(obj))->u.pair_val.car) -#define SCHEME_CDR(obj) (((Scheme_Simple_Object *)(obj))->u.pair_val.cdr) - -#define SCHEME_CADR(obj) (SCHEME_CAR (SCHEME_CDR (obj))) -#define SCHEME_CAAR(obj) (SCHEME_CAR (SCHEME_CAR (obj))) -#define SCHEME_CDDR(obj) (SCHEME_CDR (SCHEME_CDR (obj))) - -#define SCHEME_MCAR(obj) (((Scheme_Simple_Object *)(obj))->u.pair_val.car) -#define SCHEME_MCDR(obj) (((Scheme_Simple_Object *)(obj))->u.pair_val.cdr) - -#define SCHEME_VEC_SIZE(obj) (((Scheme_Vector *)(obj))->size) -#define SCHEME_VEC_ELS(obj) (((Scheme_Vector *)(obj))->els) -#define SCHEME_VEC_BASE(obj) SCHEME_VEC_ELS(obj) - -#define SCHEME_FLVEC_SIZE(obj) (((Scheme_Double_Vector *)(obj))->size) -#define SCHEME_FLVEC_ELS(obj) (((Scheme_Double_Vector *)(obj))->els) - -#ifdef MZ_LONG_DOUBLE -#define SCHEME_EXTFLVEC_SIZE(obj) (((Scheme_Long_Double_Vector *)(obj))->size) -#define SCHEME_EXTFLVEC_ELS(obj) (((Scheme_Long_Double_Vector *)(obj))->els) -#endif - -#define SCHEME_FXVEC_SIZE(obj) SCHEME_VEC_SIZE(obj) -#define SCHEME_FXVEC_ELS(obj) SCHEME_VEC_ELS(obj) - -#define SCHEME_ENVBOX_VAL(obj) (*((Scheme_Object **)(obj))) -#define SCHEME_WEAK_BOX_VAL(obj) SCHEME_BOX_VAL(obj) - -#define SCHEME_PTR_VAL(obj) (((Scheme_Small_Object *)(obj))->u.ptr_val) -#define SCHEME_PTR1_VAL(obj) (((Scheme_Simple_Object *)(obj))->u.two_ptr_val.ptr1) -#define SCHEME_PTR2_VAL(obj) (((Scheme_Simple_Object *)(obj))->u.two_ptr_val.ptr2) -#define SCHEME_IPTR_VAL(obj) (((Scheme_Simple_Object *)(obj))->u.ptr_int_val.ptr) -#define SCHEME_LPTR_VAL(obj) (((Scheme_Simple_Object *)(obj))->u.ptr_long_val.ptr) -#define SCHEME_INT1_VAL(obj) (((Scheme_Simple_Object *)(obj))->u.two_int_val.int1) -#define SCHEME_INT2_VAL(obj) (((Scheme_Simple_Object *)(obj))->u.two_int_val.int2) -#define SCHEME_PINT_VAL(obj) (((Scheme_Simple_Object *)(obj))->u.ptr_int_val.pint) -#define SCHEME_PLONG_VAL(obj) (((Scheme_Simple_Object *)(obj))->u.ptr_long_val.pint) - -typedef struct Scheme_Cptr -{ - Scheme_Inclhash_Object so; /* 0x1 => an external pointer (not GCable); 0x2 => has offset */ - void *val; - Scheme_Object *type; -} Scheme_Cptr; -typedef struct Scheme_Offset_Cptr -{ - Scheme_Cptr cptr; - intptr_t offset; -} Scheme_Offset_Cptr; - -#define SCHEME_CPTR_VAL(obj) (((Scheme_Cptr *)(obj))->val) -#define SCHEME_CPTR_TYPE(obj) (((Scheme_Cptr *)(obj))->type) -#define SCHEME_CPTR_OFFSET(obj) (SCHEME_CPTR_HAS_OFFSET(obj) ? ((Scheme_Offset_Cptr *)obj)->offset : 0) -#define SCHEME_CPTR_FLAGS(obj) MZ_OPT_HASH_KEY(&((Scheme_Cptr *)(obj))->so) -#define SCHEME_CPTR_HAS_OFFSET(obj) (SCHEME_CPTR_FLAGS(obj) & 0x2) - -#define SCHEME_SET_IMMUTABLE(obj) ((MZ_OPT_HASH_KEY((Scheme_Inclhash_Object *)(obj)) |= 0x1)) -#define SCHEME_SET_CHAR_STRING_IMMUTABLE(obj) SCHEME_SET_IMMUTABLE(obj) -#define SCHEME_SET_BYTE_STRING_IMMUTABLE(obj) SCHEME_SET_IMMUTABLE(obj) -#define SCHEME_SET_VECTOR_IMMUTABLE(obj) SCHEME_SET_IMMUTABLE(obj) -#define SCHEME_SET_BOX_IMMUTABLE(obj) SCHEME_SET_IMMUTABLE(obj) - -/*========================================================================*/ -/* fast basic Scheme constructor macros */ -/*========================================================================*/ - -#define scheme_make_integer(i) LONG_TO_OBJ ((((uintptr_t)OBJ_TO_LONG(i)) << 1) | 0x1) -#define scheme_make_character(ch) ((((mzchar)ch) < 256) ? scheme_char_constants[(unsigned char)(ch)] : scheme_make_char(ch)) -#define scheme_make_ascii_character(ch) scheme_char_constants[(unsigned char)(ch)] - -#define SCHEME_UCHAR_FIND_SHIFT 8 -#define SCHEME_UCHAR_FIND_HI_MASK 0x1FFF -#define SCHEME_UCHAR_FIND_LO_MASK 0xFF - -#define scheme_uchar_find(table, x) (table[(x >> SCHEME_UCHAR_FIND_SHIFT) & SCHEME_UCHAR_FIND_HI_MASK][x & SCHEME_UCHAR_FIND_LO_MASK]) - -#define SCHEME_ISSPACE_BIT 0x10 - -#define scheme_isblank(x) ((scheme_uchar_find(scheme_uchar_table, x)) & 0x1) -#define scheme_issymbol(x) ((scheme_uchar_find(scheme_uchar_table, x)) & 0x2) -#define scheme_ispunc(x) ((scheme_uchar_find(scheme_uchar_table, x)) & 0x4) -#define scheme_iscontrol(x) ((scheme_uchar_find(scheme_uchar_table, x)) & 0x8) -#define scheme_isspace(x) ((scheme_uchar_find(scheme_uchar_table, x)) & SCHEME_ISSPACE_BIT) -/* #define scheme_isSOMETHING(x) ((scheme_uchar_find(scheme_uchar_table, x)) & 0x20) - not yet used */ -#define scheme_isdigit(x) ((scheme_uchar_find(scheme_uchar_table, x)) & 0x40) -#define scheme_isalpha(x) ((scheme_uchar_find(scheme_uchar_table, x)) & 0x80) -#define scheme_istitle(x) ((scheme_uchar_find(scheme_uchar_table, x)) & 0x100) -#define scheme_isupper(x) ((scheme_uchar_find(scheme_uchar_table, x)) & 0x200) -#define scheme_islower(x) ((scheme_uchar_find(scheme_uchar_table, x)) & 0x400) -#define scheme_isgraphic(x) ((scheme_uchar_find(scheme_uchar_table, x)) & 0x800) -#define scheme_iscaseignorable(x) ((scheme_uchar_find(scheme_uchar_table, x)) & 0x1000) -#define scheme_isspecialcasing(x) ((scheme_uchar_find(scheme_uchar_table, x)) & 0x2000) -#define scheme_needs_decompose(x) ((scheme_uchar_find(scheme_uchar_table, x)) & 0x4000) -#define scheme_needs_maybe_compose(x) ((scheme_uchar_find(scheme_uchar_table, x)) & 0x8000) - -#define scheme_iscased(x) ((scheme_uchar_find(scheme_uchar_table, x)) & 0x700) - -#define scheme_toupper(x) (x + scheme_uchar_ups[scheme_uchar_find(scheme_uchar_cases_table, x)]) -#define scheme_tolower(x) (x + scheme_uchar_downs[scheme_uchar_find(scheme_uchar_cases_table, x)]) -#define scheme_totitle(x) (x + scheme_uchar_titles[scheme_uchar_find(scheme_uchar_cases_table, x)]) -#define scheme_tofold(x) (x + scheme_uchar_folds[scheme_uchar_find(scheme_uchar_cases_table, x)]) -#define scheme_combining_class(x) (scheme_uchar_combining_classes[scheme_uchar_find(scheme_uchar_cases_table, x)]) - -#define scheme_general_category(x) ((scheme_uchar_find(scheme_uchar_cats_table, x)) & 0x1F) -/* Note: 3 bits available in the cats table */ - -/*========================================================================*/ -/* procedure values */ -/*========================================================================*/ - -/* Constants for flags in Scheme_Primitive_[Closed]_Proc. - Do not use them directly. */ -#define SCHEME_PRIM_OPT_MASK (1 | 2) -#define SCHEME_PRIM_IS_PRIMITIVE 4 -#define SCHEME_PRIM_IS_MULTI_RESULT 8 -#define SCHEME_PRIM_IS_CLOSURE 16 -#define SCHEME_PRIM_OTHER_TYPE_MASK (32 | 64 | 128 | 256) - -#define SCHEME_PRIM_OPT_INDEX_SIZE 7 -#define SCHEME_PRIM_OPT_INDEX_SHIFT 9 -#define SCHEME_PRIM_OPT_INDEX_MASK ((1 << SCHEME_PRIM_OPT_INDEX_SIZE) - 1) - -/* Values with SCHEME_PRIM_OPT_MASK, earlier implies later: */ -#define SCHEME_PRIM_OPT_FOLDING 3 -#define SCHEME_PRIM_OPT_IMMEDIATE 2 -#define SCHEME_PRIM_OPT_NONCM 1 - -/* Values with SCHEME_PRIM_OTHER_TYPE_MASK */ -#define SCHEME_PRIM_STRUCT_TYPE_INDEXLESS_GETTER (32 | 256) -#define SCHEME_PRIM_STRUCT_TYPE_CONSTR 128 -#define SCHEME_PRIM_STRUCT_TYPE_SIMPLE_CONSTR (32 | 64 | 128) -#define SCHEME_PRIM_STRUCT_TYPE_INDEXLESS_SETTER 256 -#define SCHEME_PRIM_STRUCT_TYPE_INDEXED_SETTER (128 | 256) -#define SCHEME_PRIM_STRUCT_TYPE_BROKEN_INDEXED_SETTER (32 | 128) -#define SCHEME_PRIM_TYPE_PARAMETER 64 -#define SCHEME_PRIM_TYPE_STRUCT_PROP_GETTER (64 | 128) -#define SCHEME_PRIM_STRUCT_TYPE_STRUCT_PROP_PRED (64 | 128 | 256) -#define SCHEME_PRIM_STRUCT_TYPE_INDEXED_GETTER 32 -#define SCHEME_PRIM_STRUCT_TYPE_PRED (32 | 64) - -#define SCHEME_PRIM_PROC_FLAGS(x) (((Scheme_Prim_Proc_Header *)x)->flags) - -typedef struct Scheme_Object *(Scheme_Prim)(int argc, Scheme_Object *argv[]); - -typedef struct Scheme_Object *(Scheme_Primitive_Closure_Proc)(int argc, struct Scheme_Object *argv[], Scheme_Object *p); - -#define SCHEME_MAX_ARGS 0x3FFFFFFE - -typedef struct { - Scheme_Object so; - unsigned short flags; -} Scheme_Prim_Proc_Header; - -typedef struct { - Scheme_Prim_Proc_Header pp; - Scheme_Primitive_Closure_Proc *prim_val; - const char *name; - mzshort mina; - /* If mina < 0; mina is negated case count minus one for a case-lambda - generated by mzc, where the primitive checks argument arity - itself, and mu.cases is available instead of mu.maxa. */ - union { - mzshort *cases; - mzshort maxa; /* > SCHEME_MAX_ARGS => any number of arguments */ - } mu; -} Scheme_Primitive_Proc; - -typedef struct { - Scheme_Primitive_Proc pp; - mzshort minr, maxr; - /* Never combined with a closure */ -} Scheme_Prim_W_Result_Arity; - -typedef struct Scheme_Primitive_Closure { - Scheme_Primitive_Proc p; - /* The rest is here only if SCHEME_PRIM_IS_CLOSURE - is set in p.pp.flags. */ -#ifdef MZ_PRECISE_GC - mzshort count; -#endif - Scheme_Object *val[mzFLEX_ARRAY_DECL]; -} Scheme_Primitive_Closure; - -#define SCHEME_PRIM_CLOSURE_ELS(p) ((Scheme_Primitive_Closure *)p)->val - -/* ------ Old-style primitive closures ------- */ - -typedef struct Scheme_Object *(Scheme_Closed_Prim)(void *d, int argc, struct Scheme_Object *argv[]); - -typedef struct { - Scheme_Prim_Proc_Header pp; - Scheme_Closed_Prim *prim_val; - void *data; - const char *name; - mzshort mina, maxa; /* mina == -2 => maxa is negated case count and - record is a Scheme_Closed_Case_Primitive_Proc */ -} Scheme_Closed_Primitive_Proc; - -typedef struct { - Scheme_Closed_Primitive_Proc p; - mzshort *cases; -} Scheme_Closed_Case_Primitive_Proc; - -typedef struct { - Scheme_Closed_Primitive_Proc p; - mzshort minr, maxr; -} Scheme_Closed_Prim_W_Result_Arity; - -/* ------------------------------------------------- */ -/* mzc closure glue - The following are used by mzc to implement closures. -*/ - -#define _scheme_fill_prim_closure(rec, cfunc, nm, amin, amax, flgs) \ - ((rec)->pp.so.type = scheme_prim_type, \ - (rec)->prim_val = cfunc, \ - (rec)->name = nm, \ - (rec)->mina = amin, \ - (rec)->mu.maxa = (amax == -1 ? SCHEME_MAX_ARGS + 1 : amax), \ - (rec)->pp.flags = flgs, \ - rec) - -#ifdef MZ_PRECISE_GC -# define _scheme_fill_prim_closure_post(rec, cfunc, nm, amin, amax, flgs, ln) \ - ((rec)->count = ln, \ - _scheme_fill_prim_closure(&(rec)->p, cfunc, nm, amin, amax, \ - flgs | SCHEME_PRIM_IS_CLOSURE)) -#else -# define _scheme_fill_prim_closure_post(rec, cfunc, nm, amin, amax, flgs, ln) \ - _scheme_fill_prim_closure(&(rec)->p, cfunc, nm, amin, amax, flgs) -#endif - -#define _scheme_fill_prim_case_closure(rec, cfunc, nm, ccount, cses, flgs) \ - ((rec)->pp.so.type = scheme_prim_type, \ - (rec)->prim_val = cfunc, \ - (rec)->name = nm, \ - (rec)->mina = -(ccount+1), \ - (rec)->pp.flags = flgs, \ - (rec)->mu.cases = cses, \ - rec) - -#ifdef MZ_PRECISE_GC -# define _scheme_fill_prim_case_closure_post(rec, cfunc, nm, ccount, cses, flgs, ln) \ - ((rec)->count = ln, \ - _scheme_fill_prim_case_closure(&((rec)->p), cfunc, nm, ccount, cses, \ - flgs | SCHEME_PRIM_IS_CLOSURE)) -#else -# define _scheme_fill_prim_case_closure_post(rec, cfunc, nm, ccount, cses, flgs, ln) \ - _scheme_fill_prim_case_closure(&((rec)->p), cfunc, nm, ccount, cses, flgs) -#endif - -/* ------------------------------------------------- */ - -#define SCHEME_PROCP(obj) (!SCHEME_INTP(obj) && ((_SCHEME_TYPE(obj) >= scheme_prim_type) && (_SCHEME_TYPE(obj) <= scheme_proc_chaperone_type))) -#define SCHEME_SYNTAXP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_primitive_syntax_type) -#define SCHEME_PRIMP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_prim_type) -#define SCHEME_CLSD_PRIMP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_closed_prim_type) -#define SCHEME_CONTP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_cont_type) -#define SCHEME_ECONTP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_escaping_cont_type) -#define SCHEME_CONT_MARK_SETP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_cont_mark_set_type) -#define SCHEME_PROC_STRUCTP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_proc_struct_type) -#define SCHEME_CLOSUREP(obj) (SAME_TYPE(SCHEME_TYPE(obj), scheme_closure_type) || SAME_TYPE(SCHEME_TYPE(obj), scheme_case_closure_type)) - -#define SCHEME_PRIM(obj) (((Scheme_Primitive_Proc *)(obj))->prim_val) -#define SCHEME_CLSD_PRIM(obj) (((Scheme_Closed_Primitive_Proc *)(obj))->prim_val) -#define SCHEME_CLSD_PRIM_DATA(obj) (((Scheme_Closed_Primitive_Proc *)(obj))->data) -#define SCHEME_RAW_CLOS_FUNC(obj) ((Scheme_Closure_Func)SCHEME_CAR(obj)) -#define SCHEME_RAW_CLOS_DATA(obj) SCHEME_CDR(obj) - -/*========================================================================*/ -/* hash tables and environments */ -/*========================================================================*/ - -typedef struct Scheme_Hash_Table -{ - Scheme_Inclhash_Object iso; /* 0x1 flag => print as opaque (e.g., exports table); 0x2 => misc (e.g., top-level multi_scopes) */ - intptr_t size; /* power of 2 */ - intptr_t count; - Scheme_Object **keys; - Scheme_Object **vals; - void (*make_hash_indices)(void *v, intptr_t *h1, intptr_t *h2); - int (*compare)(void *v1, void *v2); - Scheme_Object *mutex; - intptr_t mcount; /* number of non-NULL keys, >= count (which is non-NULL vals) */ -} Scheme_Hash_Table; - -typedef struct Scheme_Hash_Tree Scheme_Hash_Tree; - -typedef struct Scheme_Bucket -{ - Scheme_Object so; - void *val; - char *key; -} Scheme_Bucket; - -typedef struct Scheme_Bucket_Table -{ - Scheme_Object so; - intptr_t size; /* power of 2 */ - intptr_t count; - Scheme_Bucket **buckets; - char weak; /* 1 => normal weak, 2 => late weak */ - char with_home; - void (*make_hash_indices)(void *v, intptr_t *h1, intptr_t *h2); - int (*compare)(void *v1, void *v2); - Scheme_Object *mutex; -} Scheme_Bucket_Table; - -/* Hash tablekey types, used with scheme_hash_table */ -enum { - SCHEME_hash_string, - SCHEME_hash_ptr, - SCHEME_hash_weak_ptr, - SCHEME_hash_late_weak_ptr -}; - -enum { - SCHEME_hashtr_eq, - SCHEME_hashtr_equal, - SCHEME_hashtr_eqv -}; - -typedef struct Scheme_Env Scheme_Env; - -#define SCHEME_VAR_BUCKET(obj) ((Scheme_Bucket *)(obj)) - -/*========================================================================*/ -/* setjmpup (continuation) support */ -/*========================================================================*/ - -#ifdef USE_MZ_SETJMP -# if defined(_WIN64) -# define USE_MZ_SETJMP_INDIRECT -typedef intptr_t mz_pre_jmp_buf[31]; -# else -typedef intptr_t mz_pre_jmp_buf[8]; -# endif -#else -# define mz_pre_jmp_buf jmp_buf -#endif - -#ifdef MZ_USE_JIT -typedef struct { - mz_pre_jmp_buf jb; - uintptr_t stack_frame; /* declared as `uintptr_t' to hide pointer from 3m xform */ -} mz_one_jit_jmp_buf; -typedef mz_one_jit_jmp_buf mz_jit_jmp_buf[1]; -#else -# define mz_jit_jmp_buf mz_pre_jmp_buf -#endif - -#ifdef MZ_PRECISE_GC -typedef struct { - XFORM_CAN_IGNORE mz_jit_jmp_buf jb; - intptr_t gcvs; /* declared as `intptr_t' to hide pointer from 3m xform */ - intptr_t gcvs_cnt; -} mz_jmp_buf; -#else -# define mz_jmp_buf mz_jit_jmp_buf -#endif - -/* Like setjmp & longjmp, but you can jmp to a deeper stack position */ -/* Initialize a Scheme_Jumpup_Buf record before using it */ -typedef struct Scheme_Jumpup_Buf { - void *stack_from, *stack_copy; - intptr_t stack_size, stack_max_size; - struct Scheme_Cont *cont; /* for sharing continuation tails */ - mz_jmp_buf buf; -#ifdef MZ_PRECISE_GC - void *gc_var_stack; - void *external_stack; -#endif -} Scheme_Jumpup_Buf; - -typedef struct Scheme_Jumpup_Buf_Holder { - Scheme_Type type; /* for precise GC only */ - Scheme_Jumpup_Buf buf; -} Scheme_Jumpup_Buf_Holder; - -typedef struct Scheme_Continuation_Jump_State { - struct Scheme_Object *jumping_to_continuation; - struct Scheme_Object *alt_full_continuation; - Scheme_Object *val; /* or **vals */ - mzshort num_vals; - char is_kill, is_escape, skip_dws; -} Scheme_Continuation_Jump_State; - -#ifdef USE_MZ_SETJMP_INDIRECT -/* Needed to avoid a direct reference to scheme_mz_setjmp, - which might be implemented in assembly and incompatible - with delayloading: */ -typedef int (*Scheme_Setjmp_Proc)(mz_pre_jmp_buf); -# ifndef MZ_XFORM -# define scheme_call_mz_setjmp(s) ((scheme_get_mz_setjmp())(s)) -# else -# define scheme_call_mz_setjmp(s) scheme_mz_setjmp_post_xform(s) -# endif -#else -# ifdef USE_MZ_SETJMP -# define scheme_call_mz_setjmp(s) scheme_mz_setjmp(s) -# endif -typedef int (*Scheme_Setjmp_Proc)(void*); -#endif - -/* A mark position is in odd number, so that it can be - viewed as a pointer (i.e., a fixnum): */ -#define MZ_MARK_POS_TYPE intptr_t -/* A mark "pointer" is an offset into the stack: */ -#define MZ_MARK_STACK_TYPE intptr_t - -typedef struct Scheme_Cont_Frame_Data { - MZ_MARK_POS_TYPE cont_mark_pos; - MZ_MARK_STACK_TYPE cont_mark_stack; - void *cache; -} Scheme_Cont_Frame_Data; - -/*========================================================================*/ -/* threads */ -/*========================================================================*/ - -#ifdef MZ_PRECISE_GC -# ifdef INCLUDE_WITHOUT_PATHS -# include "schgc2obj.h" -# else -# include "../gc2/gc2_obj.h" -# endif -#endif - -typedef void (Scheme_Close_Custodian_Client)(Scheme_Object *o, void *data); -typedef void (*Scheme_Exit_Closer_Func)(Scheme_Object *, Scheme_Close_Custodian_Client *, void *); -typedef Scheme_Object *(*Scheme_Custodian_Extractor)(Scheme_Object *o); - -#ifdef MZ_PRECISE_GC -typedef struct Scheme_Object Scheme_Custodian_Reference; -#else -typedef struct Scheme_Custodian *Scheme_Custodian_Reference; -#endif - -typedef struct Scheme_Custodian Scheme_Custodian; -typedef Scheme_Bucket_Table Scheme_Thread_Cell_Table; -typedef struct Scheme_Config Scheme_Config; -typedef struct Scheme_Plumber Scheme_Plumber; - -typedef int (*Scheme_Ready_Fun)(Scheme_Object *o); -typedef void (*Scheme_Needs_Wakeup_Fun)(Scheme_Object *, void *); -typedef Scheme_Object *(*Scheme_Sync_Sema_Fun)(Scheme_Object *, int *repost); -typedef int (*Scheme_Sync_Filter_Fun)(Scheme_Object *); - -/* The Scheme_Thread structure represents a Racket thread. */ - -typedef struct Scheme_Thread { - Scheme_Object so; - - struct Scheme_Thread *next; - struct Scheme_Thread *prev; - - struct Scheme_Thread_Set *t_set_parent; - Scheme_Object *t_set_next; - Scheme_Object *t_set_prev; - - mz_jmp_buf *error_buf; - Scheme_Continuation_Jump_State cjs; - struct Scheme_Meta_Continuation *decompose_mc; /* set during a jump */ - - Scheme_Thread_Cell_Table *cell_values; - Scheme_Config *init_config; - - Scheme_Object *init_break_cell; - int can_break_at_swap; - - Scheme_Object **runstack; - Scheme_Object **runstack_start; - intptr_t runstack_size; - struct Scheme_Saved_Stack *runstack_saved; - Scheme_Object **runstack_tmp_keep; - - Scheme_Object **spare_runstack; /* in case of bouncing, we keep a recently - released runstack; it's dropped on GC, though */ - intptr_t spare_runstack_size; - - struct Scheme_Thread **runstack_owner; - struct Scheme_Saved_Stack *runstack_swapped; - - MZ_MARK_POS_TYPE cont_mark_pos; /* depth of the continuation chain */ - MZ_MARK_STACK_TYPE cont_mark_stack; /* current mark stack position */ - struct Scheme_Cont_Mark **cont_mark_stack_segments; - intptr_t cont_mark_seg_count; - intptr_t cont_mark_stack_bottom; /* for restored delimited continuations */ - intptr_t cont_mark_pos_bottom; /* for splicing cont marks in meta continuations */ - - struct Scheme_Thread **cont_mark_stack_owner; - struct Scheme_Cont_Mark *cont_mark_stack_swapped; - - struct Scheme_Prompt *meta_prompt; /* a pseudo-prompt */ - - struct Scheme_Meta_Continuation *meta_continuation; - struct Scheme_Prompt *acting_barrier_prompt; - - intptr_t engine_weight; - - void *stack_start; /* This is the C stack base of the thread, which - corresponds to the starting stack address for - paging out the thread, and in 3m corresponds to - the starting stack address for GC marking. In non-3m, - it can be 0, which means that the deepest (non-main) - thread starting address should be used. This value will - change when a continuation is applied under a prompt, - and it will be changed on stack overflow. */ - void *stack_end; /* The end of the C stack, for determine stack overflow. - Currently, this is the same for all threads. */ - - Scheme_Jumpup_Buf jmpup_buf; /* For jumping back to this thread */ - - struct Scheme_Dynamic_Wind *dw; - int next_meta; /* amount to move forward in the meta-continuaiton chain, starting with dw */ - - int running; - Scheme_Object *suspended_box; /* contains pointer to thread when it's suspended */ - Scheme_Object *resumed_box; /* contains pointer to thread when it's resumed */ - Scheme_Object *dead_box; /* contains non-zero when the thread is dead */ - Scheme_Object *running_box; /* contains pointer to thread when it's running */ - Scheme_Object *sync_box; /* semaphore used for NACK events */ - - struct Scheme_Thread *gc_prep_chain; - - struct Scheme_Thread *nester, *nestee; - - struct future_t *current_ft; - - double sleep_end; /* blocker has starting sleep time */ - int block_descriptor; - Scheme_Object *blocker; /* semaphore or port */ - Scheme_Ready_Fun block_check; - Scheme_Needs_Wakeup_Fun block_needs_wakeup; - char ran_some; - char suspend_to_kill; - - struct Scheme_Thread *return_marks_to; - Scheme_Object *returned_marks; - - struct Scheme_Overflow *overflow; - - struct Scheme_Marshal_Tables *current_mt; - - struct Optimize_Info *constant_folding; /* compiler hack */ - Scheme_Object *reading_delayed; /* reader hack */ - - Scheme_Object *(*overflow_k)(void); - Scheme_Object *overflow_reply; - - /* content of tail_buffer is zeroed on GC, unless - runstack_tmp_keep is set to tail_buffer */ - Scheme_Object **tail_buffer; - int tail_buffer_size; - - /* values_buffer is used to avoid allocating for `values' - calls. When ku.multiple.array is not the same as - values_buffer, then it can be zeroed at GC points. */ - Scheme_Object **values_buffer; - int values_buffer_size; - - struct { /* used to be a union, but that confuses MZ_PRECISE_GC */ - struct { - Scheme_Object *wait_expr; - } eval; - struct { - Scheme_Object *tail_rator; - Scheme_Object **tail_rands; - intptr_t tail_num_rands; - } apply; - struct { - Scheme_Object **array; - intptr_t count; - } multiple; - struct { - void *p1, *p2, *p3, *p4, *p5; - intptr_t i1, i2, i3, i4; - } k; - } ku; - - /* To pass the current procedure from one chaperone - layer to the next: */ - Scheme_Object *self_for_proc_chaperone; - - short suspend_break; - short external_break; - - /* Racket client can use: */ - void (*on_kill)(struct Scheme_Thread *p); - void *kill_data; - - /* Racket use only: */ - void (*private_on_kill)(void *); - void *private_kill_data; - void **private_kill_next; /* array of three pointers */ - - void **user_tls; - int user_tls_size; - - /* save thread-specific GMP state: */ - intptr_t gmp_tls[6]; - void *gmp_tls_data; - - intptr_t accum_process_msec; - intptr_t current_start_process_msec; - - struct Scheme_Thread_Custodian_Hop *mr_hop; - Scheme_Custodian_Reference *mref; - Scheme_Object *extra_mrefs; /* More owning custodians */ - Scheme_Object *transitive_resumes; /* A hash table of running-boxes */ - - Scheme_Object *name; - - Scheme_Object *mbox_first; - Scheme_Object *mbox_last; - Scheme_Object *mbox_sema; - - long saved_errno; - - int futures_slow_path_tracing; - -#ifdef MZ_PRECISE_GC - struct GC_Thread_Info *gc_info; /* managed by the GC */ - void *place_channel_msg_in_flight; - void *place_channel_msg_chain_in_flight; -#endif - -} Scheme_Thread; - -#include "schthread.h" - -#if !SCHEME_DIRECT_EMBEDDED -# ifdef LINK_EXTENSIONS_BY_TABLE -# define scheme_current_thread (*scheme_current_thread_ptr) -# endif -#endif - -typedef void (*Scheme_Kill_Action_Func)(void *); - -#define ESCAPE_BLOCK(return_code) \ - thread = scheme_get_current_thread(); \ - savebuf = thread->error_buf; \ - thread->error_buf = &newbuf; \ - thread = NULL; \ - if (scheme_setjmp(newbuf)) \ - { \ - thread = scheme_get_current_thread(); \ - thread->error_buf = savebuf; \ - scheme_clear_escape(); \ - return return_code; \ - } - -# define BEGIN_ESCAPEABLE(func, data) \ - { mz_jmp_buf * volatile savebuf, newbuf; \ - Scheme_Thread *thread; \ - thread = scheme_get_current_thread(); \ - scheme_push_kill_action((Scheme_Kill_Action_Func)func, (void *)data); \ - savebuf = thread->error_buf; \ - thread->error_buf = &newbuf; \ - thread = NULL; \ - if (scheme_setjmp(newbuf)) { \ - scheme_pop_kill_action(); \ - thread = scheme_get_current_thread(); \ - if (!thread->cjs.skip_dws) { \ - func(data); \ - } \ - scheme_longjmp(*savebuf, 1); \ - } else { -# define END_ESCAPEABLE() \ - thread = scheme_get_current_thread(); \ - scheme_pop_kill_action(); \ - thread->error_buf = savebuf; \ - thread = NULL; } } - -typedef int (*Scheme_Frozen_Stack_Proc)(void *); - -/*========================================================================*/ -/* parameters */ -/*========================================================================*/ - -enum { - MZCONFIG_ENV, - MZCONFIG_INPUT_PORT, - MZCONFIG_OUTPUT_PORT, - MZCONFIG_ERROR_PORT, - - MZCONFIG_ERROR_DISPLAY_HANDLER, - MZCONFIG_ERROR_PRINT_VALUE_HANDLER, - - MZCONFIG_EXIT_HANDLER, - - MZCONFIG_INIT_EXN_HANDLER, - - MZCONFIG_PRINT_HANDLER, - MZCONFIG_PROMPT_READ_HANDLER, - MZCONFIG_READ_HANDLER, - MZCONFIG_READ_INPUT_PORT_HANDLER, - - MZCONFIG_CASE_SENS, - MZCONFIG_CAN_READ_PIPE_QUOTE, - - MZCONFIG_PRINT_GRAPH, - MZCONFIG_PRINT_STRUCT, - MZCONFIG_PRINT_BOX, - MZCONFIG_PRINT_VEC_SHORTHAND, - MZCONFIG_PRINT_HASH_TABLE, - MZCONFIG_PRINT_UNREADABLE, - MZCONFIG_PRINT_PAIR_CURLY, - MZCONFIG_PRINT_MPAIR_CURLY, - MZCONFIG_PRINT_SYNTAX_WIDTH, - MZCONFIG_PRINT_READER, - MZCONFIG_PRINT_LONG_BOOLEAN, - MZCONFIG_PRINT_AS_QQ, - - MZCONFIG_ERROR_PRINT_WIDTH, - MZCONFIG_ERROR_PRINT_CONTEXT_LENGTH, - - MZCONFIG_ERROR_ESCAPE_HANDLER, - - MZCONFIG_EXE_YIELD_HANDLER, - - MZCONFIG_ALLOW_SET_UNDEFINED, - MZCONFIG_COMPILE_MODULE_CONSTS, - MZCONFIG_USE_JIT, - MZCONFIG_DISALLOW_INLINE, - MZCONFIG_COMPILE_TARGET_MACHINE, - - MZCONFIG_CUSTODIAN, - MZCONFIG_INSPECTOR, - MZCONFIG_CODE_INSPECTOR, - MZCONFIG_PLUMBER, - - MZCONFIG_LOAD_DIRECTORY, - MZCONFIG_WRITE_DIRECTORY, - - MZCONFIG_PORT_PRINT_HANDLER, - - MZCONFIG_LOAD_EXTENSION_HANDLER, - - MZCONFIG_CURRENT_DIRECTORY, - MZCONFIG_CURRENT_ENV_VARS, - MZCONFIG_FORCE_DELETE_PERMS, - - MZCONFIG_CURRENT_USER_DIRECTORY, - - MZCONFIG_RANDOM_STATE, - - MZCONFIG_CURRENT_MODULE_SRC, - - MZCONFIG_ERROR_PRINT_SRCLOC, - - MZCONFIG_CMDLINE_ARGS, - - MZCONFIG_LOCALE, - - MZCONFIG_SECURITY_GUARD, - - MZCONFIG_PORT_COUNT_LINES, - - MZCONFIG_SCHEDULER_RANDOM_STATE, - - MZCONFIG_THREAD_SET, - MZCONFIG_THREAD_INIT_STACK_SIZE, - - MZCONFIG_SUBPROC_CUSTODIAN_MODE, - MZCONFIG_SUBPROC_GROUP_ENABLED, - - MZCONFIG_LOAD_DELAY_ENABLED, - MZCONFIG_DELAY_LOAD_INFO, - - MZCONFIG_LOGGER, - - __MZCONFIG_BUILTIN_COUNT__ -}; - -/*========================================================================*/ -/* ports */ -/*========================================================================*/ - -typedef struct Scheme_Input_Port Scheme_Input_Port; -typedef struct Scheme_Output_Port Scheme_Output_Port; -typedef struct Scheme_Port Scheme_Port; - -typedef intptr_t (*Scheme_Get_String_Fun)(Scheme_Input_Port *port, - char *buffer, intptr_t offset, intptr_t size, - int nonblock, Scheme_Object *unless); -typedef intptr_t (*Scheme_Peek_String_Fun)(Scheme_Input_Port *port, - char *buffer, intptr_t offset, intptr_t size, - Scheme_Object *skip, - int nonblock, Scheme_Object *unless); -typedef Scheme_Object *(*Scheme_Progress_Evt_Fun)(Scheme_Input_Port *port); -typedef int (*Scheme_Peeked_Read_Fun)(Scheme_Input_Port *port, - intptr_t amount, - Scheme_Object *unless_evt, - Scheme_Object *target_ch); -typedef int (*Scheme_In_Ready_Fun)(Scheme_Input_Port *port); -typedef void (*Scheme_Close_Input_Fun)(Scheme_Input_Port *port); -typedef void (*Scheme_Need_Wakeup_Input_Fun)(Scheme_Input_Port *, void *); - -typedef Scheme_Object *(*Scheme_Location_Fun)(Scheme_Port *); -typedef void (*Scheme_Count_Lines_Fun)(Scheme_Port *); -typedef int (*Scheme_Buffer_Mode_Fun)(Scheme_Port *, int m); - -typedef Scheme_Object *(*Scheme_Write_String_Evt_Fun)(Scheme_Output_Port *, - const char *str, intptr_t offset, intptr_t size); -typedef intptr_t (*Scheme_Write_String_Fun)(Scheme_Output_Port *, - const char *str, intptr_t offset, intptr_t size, - int rarely_block, int enable_break); -typedef int (*Scheme_Out_Ready_Fun)(Scheme_Output_Port *port); -typedef void (*Scheme_Close_Output_Fun)(Scheme_Output_Port *port); -typedef void (*Scheme_Need_Wakeup_Output_Fun)(Scheme_Output_Port *, void *); -typedef Scheme_Object *(*Scheme_Write_Special_Evt_Fun)(Scheme_Output_Port *, Scheme_Object *); -typedef int (*Scheme_Write_Special_Fun)(Scheme_Output_Port *, Scheme_Object *, - int nonblock); - -struct Scheme_Port -{ - Scheme_Object so; - char count_lines, was_cr; - intptr_t position, readpos, lineNumber, charsSinceNewline; - intptr_t column, oldColumn; /* column tracking with one tab/newline ungetc */ - int utf8state; - Scheme_Location_Fun location_fun; - Scheme_Count_Lines_Fun count_lines_fun; - Scheme_Buffer_Mode_Fun buffer_mode_fun; - Scheme_Object *position_redirect; /* for `file-position' */ -}; - -struct Scheme_Input_Port -{ - struct Scheme_Port p; - char slow; /* 0 => no line count, no ungotten, etc.: can call get_string_fun directly */ - char closed, pending_eof; - Scheme_Object *sub_type; - Scheme_Object *closed_evt; - Scheme_Custodian_Reference *mref; - void *port_data; - Scheme_Get_String_Fun get_string_fun; - Scheme_Peek_String_Fun peek_string_fun; - Scheme_Progress_Evt_Fun progress_evt_fun; - Scheme_Peeked_Read_Fun peeked_read_fun; - Scheme_In_Ready_Fun byte_ready_fun; - Scheme_Close_Input_Fun close_fun; - Scheme_Need_Wakeup_Input_Fun need_wakeup_fun; - Scheme_Object *read_handler; - Scheme_Object *name; - Scheme_Object *peeked_read, *peeked_write; - Scheme_Object *progress_evt, *input_lock, *input_giveup, *input_extras, *input_extras_ready; - unsigned char ungotten[24]; - int ungotten_count; - Scheme_Object *special, *ungotten_special; - Scheme_Object *unless, *unless_cache; - struct Scheme_Output_Port *output_half; -#ifdef WINDOWS_FILE_HANDLES - char *bufwidths; /* to track CRLF => LF conversions in the buffer */ -#endif -}; - -#define SCHEME_INPORT_VAL(i) (((Scheme_Input_Port *)i)->port_data) - -struct Scheme_Output_Port -{ - struct Scheme_Port p; - short closed; - Scheme_Object *sub_type; - Scheme_Object *closed_evt; - Scheme_Custodian_Reference *mref; - void *port_data; - Scheme_Write_String_Evt_Fun write_string_evt_fun; - Scheme_Write_String_Fun write_string_fun; - Scheme_Close_Output_Fun close_fun; - Scheme_Out_Ready_Fun ready_fun; - Scheme_Need_Wakeup_Output_Fun need_wakeup_fun; - Scheme_Write_Special_Evt_Fun write_special_evt_fun; - Scheme_Write_Special_Fun write_special_fun; - intptr_t pos; - Scheme_Object *name; - Scheme_Object *display_handler; - Scheme_Object *write_handler; - Scheme_Object *print_handler; - struct Scheme_Input_Port *input_half; -}; - -#define SCHEME_OUTPORT_VAL(o) (((Scheme_Output_Port *)o)->port_data) - -#define SCHEME_SPECIAL (-2) -#define SCHEME_UNLESS_READY (-3) - -/*========================================================================*/ -/* exceptions */ -/*========================================================================*/ - -/* This file includes the MZEXN constants */ -#ifdef INCLUDE_WITHOUT_PATHS -# include "schexn.h" -#else -# include "../src/schexn.h" -#endif - -#define SCHEME_LOG_FATAL 1 -#define SCHEME_LOG_ERROR 2 -#define SCHEME_LOG_WARNING 3 -#define SCHEME_LOG_INFO 4 -#define SCHEME_LOG_DEBUG 5 - -typedef struct Scheme_Logger Scheme_Logger; - -/*========================================================================*/ -/* security */ -/*========================================================================*/ - -#define SCHEME_GUARD_FILE_READ 0x1 -#define SCHEME_GUARD_FILE_WRITE 0x2 -#define SCHEME_GUARD_FILE_EXECUTE 0x4 -#define SCHEME_GUARD_FILE_DELETE 0x8 -#define SCHEME_GUARD_FILE_EXISTS 0x10 - -/*========================================================================*/ -/* evaluation */ -/*========================================================================*/ - -/* Exploit the fact that these should never be dereferenced: */ -#ifndef FIRST_TWO_BYTES_ARE_LEGAL_ADDRESSES -# define MZ_EVAL_WAITING_CONSTANT ((Scheme_Object *)0x2) -# define MZ_APPLY_WAITING_CONSTANT ((Scheme_Object *)0x4) -# define MZ_MULTIPLE_VALUES_CONSTANT ((Scheme_Object *)0x6) -#endif - -#ifdef MZ_EVAL_WAITING_CONSTANT -# define SCHEME_EVAL_WAITING MZ_EVAL_WAITING_CONSTANT -# define SCHEME_TAIL_CALL_WAITING MZ_APPLY_WAITING_CONSTANT -# define SCHEME_MULTIPLE_VALUES MZ_MULTIPLE_VALUES_CONSTANT -#else -# define SCHEME_TAIL_CALL_WAITING scheme_tail_call_waiting -# define SCHEME_EVAL_WAITING scheme_eval_waiting -# define SCHEME_MULTIPLE_VALUES scheme_multiple_values -#endif - -#define SCHEME_ASSERT(expr,msg) ((expr) ? 1 : (scheme_signal_error(msg), 0)) - -#ifdef MZ_CAN_ACCESS_THREAD_LOCAL_DIRECTLY -# define mzSCHEME_CURRENT_THREAD scheme_current_thread -#else -# define mzSCHEME_CURRENT_THREAD scheme_get_current_thread() -#endif - -#define scheme_eval_wait_expr (mzSCHEME_CURRENT_THREAD->ku.eval.wait_expr) -#define scheme_tail_rator (mzSCHEME_CURRENT_THREAD->ku.apply.tail_rator) -#define scheme_tail_num_rands (mzSCHEME_CURRENT_THREAD->ku.apply.tail_num_rands) -#define scheme_tail_rands (mzSCHEME_CURRENT_THREAD->ku.apply.tail_rands) -#define scheme_overflow_reply (mzSCHEME_CURRENT_THREAD->overflow_reply) - -#define scheme_error_buf *(mzSCHEME_CURRENT_THREAD->error_buf) -#define scheme_jumping_to_continuation (mzSCHEME_CURRENT_THREAD->cjs.jumping_to_continuation) - -#define scheme_multiple_count (mzSCHEME_CURRENT_THREAD->ku.multiple.count) -#define scheme_multiple_array (mzSCHEME_CURRENT_THREAD->ku.multiple.array) - -#define scheme_setjmpup(b, base, s) scheme_setjmpup_relative(b, base, s, NULL) - -#define scheme_do_eval_w_thread(r,n,e,f,p) scheme_do_eval(r,n,e,f) -#define scheme_apply_wp(r,n,a,p) scheme_apply(r,n,a) -#define scheme_apply_multi_wp(r,n,a,p) scheme_apply_multi(r,n,a) -#define scheme_apply_eb_wp(r,n,a,p) scheme_apply_eb(r,n,a) -#define scheme_apply_multi_eb_wp(r,n,a,p) scheme_apply_multi_eb(r,n,a) - -#define _scheme_apply(r,n,rs) scheme_do_eval(r,n,rs,1) -#define _scheme_apply_multi(r,n,rs) scheme_do_eval(r,n,rs,-1) -#define _scheme_apply_wp(r,n,rs,p) scheme_do_eval_w_thread(r,n,rs,1,p) -#define _scheme_apply_multi_wp(r,n,rs,p) scheme_do_eval_w_thread(r,n,rs,-1,p) -#define _scheme_tail_apply scheme_tail_apply -#define _scheme_tail_apply_wp scheme_tail_apply_wp - -#define _scheme_tail_eval scheme_tail_eval -#define _scheme_tail_eval_wp scheme_tail_eval_wp - -#define _scheme_direct_apply_primitive_multi(prim, argc, argv) \ - (((Scheme_Primitive_Proc *)prim)->prim_val(argc, argv, prim)) -#define _scheme_direct_apply_primitive(prim, argc, argv) \ - scheme_check_one_value(_scheme_direct_apply_primitive_multi(prim, argc, argv)) -#define _scheme_direct_apply_primitive_closure_multi(prim, argc, argv) \ - _scheme_direct_apply_primitive_multi(prim, argc, argv) -#define _scheme_direct_apply_primitive_closure(prim, argc, argv) \ - _scheme_direct_apply_primitive(prim, argc, argv) -#define _scheme_direct_apply_closed_primitive_multi(prim, argc, argv) \ - (((Scheme_Closed_Primitive_Proc *)prim)->prim_val(((Scheme_Closed_Primitive_Proc *)prim)->data, argc, argv)) -#define _scheme_direct_apply_closed_primitive(prim, argc, argv) \ - scheme_check_one_value(_scheme_direct_apply_closed_primitive_multi(prim, argc, argv)) - -#define _scheme_force_value(v) ((v == SCHEME_TAIL_CALL_WAITING) ? scheme_force_value(v) : v) - -#define scheme_tail_apply_buffer_wp(n, p) ((p)->tail_buffer) -#define scheme_tail_apply_buffer(n) \ -{ \ - Scheme_Thread *thread; \ - thread = scheme_get_current_thread(); \ - scheme_tail_apply_buffer_wp(n, thread);\ -} - -#define _scheme_tail_apply_no_copy_wp_tcw(f, n, args, p, tcw) (p->ku.apply.tail_rator = f, p->ku.apply.tail_rands = args, p->ku.apply.tail_num_rands = n, tcw) -#define _scheme_tail_apply_no_copy_wp(f, n, args, p) _scheme_tail_apply_no_copy_wp_tcw(f, n, args, p, SCHEME_TAIL_CALL_WAITING) -#define _scheme_tail_apply_no_copy(f, n, args) \ -{ \ - Scheme_Thread *thread; \ - thread = scheme_get_current_thread(); \ - _scheme_tail_apply_no_copy_wp(f, n, args, thread) \ -} - -#define scheme_thread_block_w_thread(t,p) scheme_thread_block(t) - -#if !SCHEME_DIRECT_EMBEDDED -# ifdef LINK_EXTENSIONS_BY_TABLE -# define scheme_fuel_counter (*scheme_fuel_counter_ptr) -# endif -#else -THREAD_LOCAL_DECL(MZ_EXTERN volatile int scheme_fuel_counter); -#endif - -#ifdef FUEL_AUTODECEREMENTS -# define DECREMENT_FUEL(f, p) (f) -#else -# define DECREMENT_FUEL(f, p) (f -= (p)) -#endif - -#define SCHEME_USE_FUEL(n) \ - { if (DECREMENT_FUEL(scheme_fuel_counter, n) <= 0) { scheme_out_of_fuel(); }} - -#if SCHEME_DIRECT_EMBEDDED -MZ_EXTERN Scheme_Object *scheme_eval_waiting; -#define scheme_tail_eval(obj) \ - (scheme_eval_wait_expr = obj, SCHEME_EVAL_WAITING) -#endif - -#define scheme_break_waiting(p) (p->external_break) - -#ifndef USE_MZ_SETJMP -# ifdef USE_UNDERSCORE_SETJMP -# define scheme_mz_longjmp(b, v) _longjmp(b, v) -# define scheme_call_mz_setjmp(b) _setjmp(b) -# else -# define scheme_mz_longjmp(b, v) longjmp(b, v) -# define scheme_call_mz_setjmp(b) setjmp(b) -# endif -#endif - -#ifdef MZ_USE_JIT -MZ_EXTERN MZ_NORETURN void scheme_jit_longjmp(mz_jit_jmp_buf b, int v); -MZ_EXTERN void scheme_jit_setjmp_prepare(mz_jit_jmp_buf b); -# define scheme_jit_setjmp(b) (scheme_jit_setjmp_prepare(b), scheme_call_mz_setjmp((b)->jb)) -#else -# define scheme_jit_longjmp(b, v) scheme_mz_longjmp(b, v) -# define scheme_jit_setjmp(b) scheme_call_mz_setjmp(b) -#endif - -#ifdef MZ_PRECISE_GC -/* Need to make sure that a __gc_var_stack__ is always available where - setjmp & longjmp are used. */ -# define scheme_longjmp(b, v) (((intptr_t *)(void*)((b).gcvs))[1] = (b).gcvs_cnt, \ - GC_variable_stack = (void **)(void*)(b).gcvs, \ - scheme_jit_longjmp((b).jb, v)) -# define scheme_setjmp(b) ((b).gcvs = (intptr_t)__gc_var_stack__, \ - (b).gcvs_cnt = XFORM_CURRENT_COUNT, \ - scheme_jit_setjmp((b).jb)) -# ifndef MZ_XFORM -# define XFORM_CURRENT_COUNT (intptr_t)(__gc_var_stack__[1]) -# endif -#else -# define scheme_longjmp(b, v) scheme_jit_longjmp(b, v) -# define scheme_setjmp(b) scheme_jit_setjmp(b) -#endif - -/*========================================================================*/ -/* memory management macros */ -/*========================================================================*/ - -/* Allocation */ -#define scheme_alloc_object() \ - ((Scheme_Object *) scheme_malloc_small_tagged(sizeof(Scheme_Simple_Object))) -#define scheme_alloc_small_object() \ - ((Scheme_Object *) scheme_malloc_small_tagged(sizeof(Scheme_Small_Object))) -#define scheme_alloc_stubborn_object() \ - ((Scheme_Object *) scheme_malloc_stubborn_tagged(sizeof(Scheme_Simple_Object))) -#define scheme_alloc_stubborn_small_object() \ - ((Scheme_Object *) scheme_malloc_stubborn_tagged(sizeof(Scheme_Small_Object))) -#define scheme_alloc_eternal_object() \ - ((Scheme_Object *) scheme_malloc_eternal_tagged(sizeof(Scheme_Simple_Object))) -#define scheme_alloc_eternal_small_object() \ - ((Scheme_Object *) scheme_malloc_eternal_tagged(sizeof(Scheme_Small_Object))) - -#ifdef SCHEME_NO_GC -void *scheme_malloc(size_t size); -# define scheme_malloc_atomic scheme_malloc -# define scheme_malloc_stubborn scheme_malloc -# define scheme_malloc_uncollectable scheme_malloc -#else -# define scheme_malloc GC_malloc -# define scheme_malloc_atomic GC_malloc_atomic -# ifdef MZ_PRECISE_GC -# define scheme_malloc_stubborn scheme_malloc -# else -# define scheme_malloc_stubborn GC_malloc_stubborn -# define scheme_malloc_uncollectable GC_malloc_uncollectable -# endif -#endif - -#ifdef USE_MEMORY_TRACING -# define USE_TAGGED_ALLOCATION -# define MEMORY_COUNTING_ON -#endif - -#ifdef MZ_PRECISE_GC -# ifndef GC2_EXTERN -# define GC2_EXTERN MZ_EXTERN -# endif -# ifdef INCLUDE_WITHOUT_PATHS -# if !SCHEME_DIRECT_EMBEDDED -# define GC2_JUST_MACROS_AND_TYPEDEFS -# endif -# include "schemegc2.h" -# else -# include "../gc2/gc2.h" -# endif -# define scheme_malloc_tagged GC_malloc_one_tagged -# define scheme_malloc_small_tagged(s) GC_malloc_one_small_tagged(gcWORDS_TO_BYTES(gcBYTES_TO_WORDS(s))) -# define scheme_malloc_small_dirty_tagged(s) GC_malloc_one_small_dirty_tagged(gcWORDS_TO_BYTES(gcBYTES_TO_WORDS(s))) -# define scheme_malloc_small_atomic_tagged(s) GC_malloc_small_atomic_tagged(gcWORDS_TO_BYTES(gcBYTES_TO_WORDS(s))) -# define scheme_malloc_array_tagged GC_malloc_array_tagged -# define scheme_malloc_atomic_tagged GC_malloc_atomic_tagged -# define scheme_malloc_stubborn_tagged GC_malloc_one_tagged -# define scheme_malloc_eternal_tagged GC_malloc_atomic_uncollectable -# define scheme_malloc_uncollectable_tagged >> error << -# define scheme_malloc_envunbox GC_malloc -# define scheme_malloc_weak GC_malloc_weak -# define scheme_malloc_weak_tagged GC_malloc_one_weak_tagged -# define scheme_malloc_allow_interior GC_malloc_allow_interior -# define scheme_malloc_atomic_allow_interior GC_malloc_atomic_allow_interior -#else -# ifdef USE_TAGGED_ALLOCATION -extern void *scheme_malloc_tagged(size_t); -# define scheme_malloc_array_tagged scheme_malloc -# define scheme_malloc_small_tagged scheme_malloc -extern void *scheme_malloc_atomic_tagged(size_t); -extern void *scheme_malloc_stubborn_tagged(size_t); -extern void *scheme_malloc_eternal_tagged(size_t); -extern void *scheme_malloc_uncollectable_tagged(size_t); -extern void *scheme_malloc_envunbox(size_t); -# else -# define scheme_malloc_tagged scheme_malloc -# define scheme_malloc_small_tagged scheme_malloc -# define scheme_malloc_array_tagged scheme_malloc -# define scheme_malloc_atomic_tagged scheme_malloc_atomic -# define scheme_malloc_stubborn_tagged scheme_malloc_stubborn -# define scheme_malloc_eternal_tagged scheme_malloc_eternal -# define scheme_malloc_uncollectable_tagged scheme_malloc_uncollectable -# define scheme_malloc_envunbox scheme_malloc -# endif -# define scheme_malloc_small_dirty_tagged scheme_malloc_small_tagged -# define scheme_malloc_allow_interior scheme_malloc -# define scheme_malloc_atomic_allow_interior scheme_malloc_atomic -# define scheme_malloc_small_atomic_tagged scheme_malloc_atomic_tagged -#endif - -#ifdef MZ_PRECISE_GC -# define MZ_GC_DECL_REG(size) void *__gc_var_stack__[size+2] = { (void *)0, (void *)size }; -# define MZ_GC_VAR_IN_REG(x, v) (__gc_var_stack__[x+2] = (void *)&(v)) -# define MZ_GC_ARRAY_VAR_IN_REG(x, v, l) (__gc_var_stack__[x+2] = (void *)0, \ - __gc_var_stack__[x+3] = (void *)&(v), \ - __gc_var_stack__[x+4] = (void *)l) -# define MZ_GC_NO_VAR_IN_REG(x) (__gc_var_stack__[x+2] = NULL) -# define MZ_GC_REG() (__gc_var_stack__[0] = GC_variable_stack, \ - GC_variable_stack = __gc_var_stack__) -# define MZ_GC_UNREG() (GC_variable_stack = (void **)__gc_var_stack__[0]) -#else -# define MZ_GC_DECL_REG(size) /* empty */ -# define MZ_GC_VAR_IN_REG(x, v) /* empty */ -# define MZ_GC_ARRAY_VAR_IN_REG(x, v, l) /* empty */ -# define MZ_GC_NO_VAR_IN_REG(x) /* empty */ -# define MZ_GC_REG() /* empty */ -# define MZ_GC_UNREG() /* empty */ -#endif - -#define SCHEME_GC_SHAPE_TERM 0 -#define SCHEME_GC_SHAPE_PTR_OFFSET 1 -#define SCHEME_GC_SHAPE_ADD_SIZE 2 - -/*========================================================================*/ -/* embedding configuration and hooks */ -/*========================================================================*/ - -#if SCHEME_DIRECT_EMBEDDED - -#if defined(_IBMR2) -MZ_EXTERN intptr_t scheme_stackbottom; -#endif - -MZ_EXTERN int scheme_defining_primitives; - -/* These flags must be set before Racket is started: */ -MZ_EXTERN int scheme_case_sensitive; /* Defaults to 0 */ -MZ_EXTERN int scheme_no_keywords; /* Defaults to 0 */ -MZ_EXTERN int scheme_allow_set_undefined; /* Defaults to 0 */ -MZ_EXTERN int scheme_square_brackets_are_parens; /* Defaults to 1 */ -MZ_EXTERN int scheme_curly_braces_are_parens; /* Defaults to 1 */ -MZ_EXTERN int scheme_hash_percent_syntax_only; /* Defaults to 0 */ -MZ_EXTERN int scheme_hash_percent_globals_only; /* Defaults to 0 */ -MZ_EXTERN int scheme_binary_mode_stdio; /* Windows-specific; Defaults to 0 */ -MZ_EXTERN int scheme_startup_use_jit; /* Defaults to 1 */ -MZ_EXTERN int scheme_startup_compile_machine_independent; /* Defaults to 0 */ -MZ_EXTERN int scheme_ignore_user_paths; /* Defaults to 0 */ -MZ_EXTERN int scheme_ignore_link_paths; /* Defaults to 0 */ - -MZ_EXTERN void scheme_set_case_sensitive(int); -MZ_EXTERN void scheme_set_allow_set_undefined(int); -MZ_EXTERN void scheme_set_binary_mode_stdio(int); -MZ_EXTERN void scheme_set_startup_use_jit(int); -MZ_EXTERN void scheme_set_startup_compile_machine_independent(int); -MZ_EXTERN void scheme_set_startup_load_on_demand(int); -MZ_EXTERN void scheme_set_ignore_user_paths(int); -MZ_EXTERN void scheme_set_ignore_link_paths(int); -MZ_EXTERN void scheme_set_cross_compile_mode(int); -MZ_EXTERN void scheme_set_logging(int syslog_level, int stderr_level); -MZ_EXTERN void scheme_set_logging_spec(Scheme_Object *syslog_level, Scheme_Object *stderr_level); -MZ_EXTERN void scheme_set_logging2(int syslog_level, int stderr_level, int stdout_level); -MZ_EXTERN void scheme_set_logging2_spec(Scheme_Object *syslog_level, Scheme_Object *stderr_level, Scheme_Object *stdout_level); - -MZ_EXTERN int scheme_get_allow_set_undefined(); - -MZ_EXTERN void scheme_set_compiled_file_check(int); -#define SCHEME_COMPILED_FILE_CHECK_MODIFY_SECONDS 0 -#define SCHEME_COMPILED_FILE_CHECK_EXISTS 1 - -#ifdef MZ_CAN_ACCESS_THREAD_LOCAL_DIRECTLY -THREAD_LOCAL_DECL(MZ_EXTERN Scheme_Thread *scheme_current_thread); -THREAD_LOCAL_DECL(MZ_EXTERN Scheme_Thread *scheme_first_thread); -#endif -XFORM_NONGCING MZ_EXTERN Scheme_Thread *scheme_get_current_thread(); -XFORM_NONGCING MZ_EXTERN intptr_t scheme_get_multiple_count(); -XFORM_NONGCING MZ_EXTERN Scheme_Object **scheme_get_multiple_array(); -XFORM_NONGCING MZ_EXTERN void scheme_set_current_thread_ran_some(); - -MZ_EXTERN void scheme_embedded_load(intptr_t len, const char *s, int predefined); -MZ_EXTERN void scheme_register_embedded_load(intptr_t len, const char *s); - -/* Set these global hooks (optionally): */ -typedef void (*Scheme_Exit_Proc)(int v); -MZ_EXTERN Scheme_Exit_Proc scheme_exit; -MZ_EXTERN void scheme_set_exit(Scheme_Exit_Proc p); -typedef void (*Scheme_At_Exit_Callback_Proc)(void); -typedef int (*Scheme_At_Exit_Proc)(Scheme_At_Exit_Callback_Proc); -MZ_EXTERN void scheme_set_atexit(Scheme_At_Exit_Proc p); -typedef void (*scheme_console_printf_t)(char *str, ...); -MZ_EXTERN scheme_console_printf_t scheme_console_printf; -MZ_EXTERN scheme_console_printf_t scheme_get_console_printf(); -MZ_EXTERN void scheme_set_console_printf(scheme_console_printf_t p); -typedef void (*scheme_console_output_t)(char *str, intptr_t len); -MZ_EXTERN scheme_console_output_t scheme_console_output; -MZ_EXTERN void scheme_set_console_output(scheme_console_output_t p); -MZ_EXTERN void scheme_ensure_console_ready(); -MZ_EXTERN void (*scheme_sleep)(float seconds, void *fds); -MZ_EXTERN void (*scheme_notify_multithread)(int on); -MZ_EXTERN void (*scheme_wakeup_on_input)(void *fds); -MZ_EXTERN int (*scheme_check_for_break)(void); -#ifdef MZ_PRECISE_GC -MZ_EXTERN void *(*scheme_get_external_stack_val)(void); -MZ_EXTERN void (*scheme_set_external_stack_val)(void *); -#endif -#ifdef USE_WIN32_THREADS -MZ_EXTERN void (*scheme_suspend_main_thread)(void); -int scheme_set_in_main_thread(void); -void scheme_restore_nonmain_thread(void); -#endif - -typedef Scheme_Object *(*Scheme_Stdio_Maker_Proc)(void); -MZ_EXTERN Scheme_Object *(*scheme_make_stdin)(void); -MZ_EXTERN Scheme_Object *(*scheme_make_stdout)(void); -MZ_EXTERN Scheme_Object *(*scheme_make_stderr)(void); - -MZ_EXTERN void scheme_set_stdio_makers(Scheme_Stdio_Maker_Proc in, - Scheme_Stdio_Maker_Proc out, - Scheme_Stdio_Maker_Proc err); - - -MZ_EXTERN void scheme_set_banner(char *s); -MZ_EXTERN Scheme_Object *scheme_set_exec_cmd(char *s); -MZ_EXTERN Scheme_Object *scheme_set_run_cmd(char *s); -MZ_EXTERN void scheme_set_collects_path(Scheme_Object *p); -MZ_EXTERN void scheme_set_config_path(Scheme_Object *p); -MZ_EXTERN void scheme_set_host_collects_path(Scheme_Object *p); -MZ_EXTERN void scheme_set_host_config_path(Scheme_Object *p); -MZ_EXTERN void scheme_set_original_dir(Scheme_Object *d); -MZ_EXTERN void scheme_set_addon_dir(Scheme_Object *p); -MZ_EXTERN void scheme_set_command_line_arguments(Scheme_Object *vec); -MZ_EXTERN void scheme_set_compiled_file_paths(Scheme_Object *list); -MZ_EXTERN void scheme_set_compiled_file_roots(Scheme_Object *list); -#ifdef DOS_FILE_SYSTEM -MZ_EXTERN void scheme_set_dll_path(wchar_t *s); -typedef void *(*scheme_dll_open_proc)(const char *name, int as_global); -typedef void *(*scheme_dll_find_object_proc)(void *h, const char *name); -typedef void (*scheme_dll_close_proc)(void *h); -MZ_EXTERN void scheme_set_dll_procs(scheme_dll_open_proc, - scheme_dll_find_object_proc, - scheme_dll_close_proc); -#endif - -MZ_EXTERN void scheme_init_collection_paths(Scheme_Env *global_env, Scheme_Object *extra_dirs); -MZ_EXTERN void scheme_init_collection_paths_post(Scheme_Env *global_env, Scheme_Object *extra_dirs, Scheme_Object *extra_post_dirs); -MZ_EXTERN void scheme_init_compiled_roots(Scheme_Env *global_env, const char *paths); - -MZ_EXTERN void scheme_seal_parameters(); - -/* Initialization */ -MZ_EXTERN Scheme_Env *scheme_basic_env(void); -MZ_EXTERN void scheme_reset_overflow(void); -MZ_EXTERN void scheme_free_all(void); - -#ifdef USE_MSVC_MD_LIBRARY -MZ_EXTERN void GC_pre_init(void); -#endif - -MZ_EXTERN void scheme_check_threads(void); -MZ_EXTERN void scheme_wake_up(void); -MZ_EXTERN int scheme_get_external_event_fd(void); - -/* GC registration: */ -MZ_EXTERN void scheme_set_stack_base(void *base, int no_auto_statics); -MZ_EXTERN void scheme_set_stack_bounds(void *base, void *deepest, int no_auto_statics); - -typedef void (*Scheme_Report_Out_Of_Memory_Proc)(void); -MZ_EXTERN void scheme_set_report_out_of_memory(Scheme_Report_Out_Of_Memory_Proc p); - -/* Stack-preparation start-up: */ -typedef int (*Scheme_Nested_Main)(void *data); -MZ_EXTERN int scheme_main_stack_setup(int no_auto_statics, Scheme_Nested_Main _main, void *data); - -/* More automatic start-up: */ -typedef int (*Scheme_Env_Main)(Scheme_Env *env, int argc, char **argv); -MZ_EXTERN int scheme_main_setup(int no_auto_statics, Scheme_Env_Main _main, int argc, char **argv); - -MZ_EXTERN void scheme_register_tls_space(void *tls_space, int _tls_index); - -MZ_EXTERN void scheme_register_static(void *ptr, intptr_t size); -#if defined(MUST_REGISTER_GLOBALS) || defined(GC_MIGHT_USE_REGISTERED_STATICS) -# define MZ_REGISTER_STATIC(x) scheme_register_static((void *)&x, sizeof(x)) -#else -# define MZ_REGISTER_STATIC(x) /* empty */ -#endif - -MZ_EXTERN void scheme_immediate_exit(int status); - -MZ_EXTERN int scheme_new_param(void); -MZ_EXTERN Scheme_Object *scheme_param_config(char *name, Scheme_Object *pos, - int argc, Scheme_Object **argv, - int arity, - Scheme_Prim *check, char *expected_type, - int isbool); -MZ_EXTERN Scheme_Object *scheme_param_config2(char *name, Scheme_Object *pos, - int argc, Scheme_Object **argv, - int arity, - Scheme_Prim *check, char *expected_contract, - int isbool); -MZ_EXTERN Scheme_Object *scheme_register_parameter(Scheme_Prim *function, char *name, int which); - -#endif /* SCHEME_DIRECT_EMBEDDED */ - -/*========================================================================*/ -/* OS signals */ -/*========================================================================*/ - -typedef void (*Scheme_Signal_Handler_Proc)(int); - -/*========================================================================*/ -/* addrinfo */ -/*========================================================================*/ - -#if defined(HAVE_GETADDRINFO) || defined(__MINGW32__) -# define mz_addrinfo addrinfo -#else -struct mz_addrinfo { - int ai_flags; - int ai_family; - int ai_socktype; - int ai_protocol; - size_t ai_addrlen; - struct sockaddr *ai_addr; - struct mz_addrinfo *ai_next; -}; -#endif - -/*========================================================================*/ -/* FFI functions */ -/*========================================================================*/ - -/* If Racket is being empbedded, then we just include the - prototypes. Otherwise, we may include a function-table definition - instead, plus macros that map the usual name to table lookups. */ - -#if SCHEME_DIRECT_EMBEDDED - -/* All functions & global constants prototyped here */ -#ifdef INCLUDE_WITHOUT_PATHS -# include "schemef.h" -#else -# include "../src/schemef.h" -#endif - -#else - -#ifdef LINK_EXTENSIONS_BY_TABLE -/* Constants and function prototypes as function pointers in a struct: */ -# ifdef INCLUDE_WITHOUT_PATHS -# include "schemex.h" -# else -# include "../src/schemex.h" -# endif - -extern Scheme_Extension_Table *scheme_extension_table; - -/* Macro mapping names to record access */ -# ifdef INCLUDE_WITHOUT_PATHS -# include "schemexm.h" -# else -# include "../src/schemexm.h" -# endif - -#else - -/* Not LINK_EXTENSIONS_BY_TABLE */ -# ifdef INCLUDE_WITHOUT_PATHS -# include "schemef.h" -# else -# include "../src/schemef.h" -# endif - -#endif - -#endif - -/*========================================================================*/ -/* misc flags */ -/*========================================================================*/ - -/* For use with scheme_symbol_name_and_size: */ -#define SCHEME_SNF_FOR_TS 0x1 -#define SCHEME_SNF_PIPE_QUOTE 0x2 -#define SCHEME_SNF_NO_PIPE_QUOTE 0x4 -#define SCHEME_SNF_NEED_CASE 0x8 -#define SCHEME_SNF_KEYWORD 0x10 -#define SCHEME_SNF_NO_KEYWORDS 0x20 - -/* For use with scheme_make_struct_values et al.: */ -#define SCHEME_STRUCT_NO_TYPE 0x01 -#define SCHEME_STRUCT_NO_CONSTR 0x02 -#define SCHEME_STRUCT_NO_PRED 0x04 -#define SCHEME_STRUCT_NO_GET 0x08 -#define SCHEME_STRUCT_NO_SET 0x10 -#define SCHEME_STRUCT_GEN_GET 0x20 -#define SCHEME_STRUCT_GEN_SET 0x40 -#define SCHEME_STRUCT_EXPTIME 0x80 -#define SCHEME_STRUCT_NO_MAKE_PREFIX 0x100 -#define SCHEME_STRUCT_NAMES_ARE_STRINGS 0x200 - -/*========================================================================*/ -/* file descriptors */ -/*========================================================================*/ - -# define MZ_GET_FDSET(p, n) scheme_get_fdset(p, n) -# define MZ_FD_ZERO(p) scheme_fdzero(p) -# define MZ_FD_SET(n, p) scheme_fdset(p, n) -# define MZ_FD_CLR(n, p) scheme_fdclr(p, n) -# define MZ_FD_ISSET(n, p) scheme_fdisset(p, n) - -/* For scheme_fd_to_semaphore(): */ -#define MZFD_CREATE_READ 1 -#define MZFD_CREATE_WRITE 2 -#define MZFD_CHECK_READ 3 -#define MZFD_CHECK_WRITE 4 -#define MZFD_REMOVE 5 - -/*========================================================================*/ - -#ifdef __cplusplus -} -#endif - -#if defined(__MWERKS__) -# ifdef MZSCHEME_USES_NEAR_GLOBALS -# pragma far_data reset -# endif -#endif - -#endif /* ! SCHEME_H */ - diff --git a/racket/src/include/schemef.h b/racket/src/include/schemef.h deleted file mode 100644 index 3d524660a8..0000000000 --- a/racket/src/include/schemef.h +++ /dev/null @@ -1,1194 +0,0 @@ -/* SKIP */ - -/* After modifying this file, `make exports' (you must have `racket' - in your path) to recreated derived files. */ - -/* Do no remove the SKIP tag above or the START tag below. */ - -/* Racket function prototypes */ -/* Macros generally shouldn't go in this file; it is used both to - prototype functions, and as a parsing source for - declaring scheme_extension_table */ - -/* The scheme_extension_table "parser" is picky; don't leave a space - between a function name and it's opening parameter parenthesis. */ - -/* After this START tag, all comments should start & end on same line */ - -/* START */ - -/*========================================================================*/ -/* setjmpup (continuations) */ -/*========================================================================*/ - -MZ_EXTERN void scheme_init_jmpup_buf(Scheme_Jumpup_Buf *b); -MZ_EXTERN int scheme_setjmpup_relative(Scheme_Jumpup_Buf *b, void *base, - void * volatile start, struct Scheme_Cont *cont); -MZ_EXTERN void scheme_longjmpup(Scheme_Jumpup_Buf *b); -MZ_EXTERN void scheme_reset_jmpup_buf(Scheme_Jumpup_Buf *b); - -#ifdef USE_MZ_SETJMP -MZ_EXTERN Scheme_Setjmp_Proc scheme_get_mz_setjmp(void); -MZ_EXTERN int scheme_mz_setjmp(mz_pre_jmp_buf b); -MZ_EXTERN void scheme_mz_longjmp(mz_pre_jmp_buf b, int v); -#endif - -MZ_EXTERN void scheme_clear_escape(void); - -MZ_EXTERN Scheme_Jumpup_Buf_Holder *scheme_new_jmpupbuf_holder(void); - -/*========================================================================*/ -/* parameters */ -/*========================================================================*/ - -MZ_EXTERN Scheme_Config *scheme_current_config(void); -MZ_EXTERN Scheme_Config *scheme_minimal_config(void); -MZ_EXTERN Scheme_Config *scheme_extend_config(Scheme_Config *c, int pos, Scheme_Object *init_val); -MZ_EXTERN void scheme_install_config(Scheme_Config *); - -MZ_EXTERN Scheme_Object *scheme_get_param(Scheme_Config *c, int pos); -MZ_EXTERN void scheme_set_param(Scheme_Config *c, int pos, Scheme_Object *o); - -MZ_EXTERN Scheme_Object *scheme_get_thread_param(Scheme_Config *c, Scheme_Thread_Cell_Table *cells, int pos); -MZ_EXTERN void scheme_set_thread_param(Scheme_Config *c, Scheme_Thread_Cell_Table *cells, int pos, Scheme_Object *o); - -MZ_EXTERN Scheme_Env *scheme_get_env(Scheme_Config *config); - -MZ_EXTERN Scheme_Thread_Cell_Table *scheme_empty_cell_table(); -MZ_EXTERN Scheme_Thread_Cell_Table *scheme_inherit_cells(Scheme_Thread_Cell_Table *cells); - -MZ_EXTERN Scheme_Object *scheme_current_break_cell(); - -/*========================================================================*/ -/* threads */ -/*========================================================================*/ - -#ifndef USE_THREAD_LOCAL -# ifndef LINK_EXTENSIONS_BY_TABLE -MZ_EXTERN Scheme_Thread *scheme_current_thread; -MZ_EXTERN volatile int scheme_fuel_counter; -# else -MZ_EXTERN Scheme_Thread **scheme_current_thread_ptr; -MZ_EXTERN volatile int *scheme_fuel_counter_ptr; -# endif -#endif - -MZ_EXTERN Scheme_Thread *scheme_get_current_thread(); - -MZ_EXTERN int scheme_is_atomic(void); -MZ_EXTERN void scheme_start_atomic(void); -MZ_EXTERN void scheme_end_atomic(void); -MZ_EXTERN void scheme_end_atomic_no_swap(void); -MZ_EXTERN void scheme_start_in_scheduler(void); -MZ_EXTERN void scheme_end_in_scheduler(void); -MZ_EXTERN void scheme_start_atomic_no_break(void); -MZ_EXTERN void scheme_end_atomic_can_break(void); - -MZ_EXTERN void scheme_out_of_fuel(void); - -MZ_EXTERN Scheme_Object *scheme_thread(Scheme_Object *thunk); -MZ_EXTERN Scheme_Object *scheme_thread_w_details(Scheme_Object *thunk, - Scheme_Config *init_config, - Scheme_Thread_Cell_Table *copy_from, - Scheme_Object *break_cell, - Scheme_Custodian *owning_custodian, - int suspend_to_kill); -MZ_EXTERN void scheme_kill_thread(Scheme_Thread *p); -MZ_EXTERN void scheme_break_thread(Scheme_Thread *p); -MZ_EXTERN void scheme_break_kind_thread(Scheme_Thread *p, int kind); -MZ_EXTERN void scheme_break_main_thread(); -MZ_EXTERN void scheme_break_main_thread_at(void *); -MZ_EXTERN void scheme_break_kind_main_thread_at(void *, int kind); -MZ_EXTERN void *scheme_get_main_thread_break_handle(); -MZ_EXTERN void scheme_set_break_main_target(Scheme_Thread *p); - -MZ_EXTERN void scheme_thread_block(float sleep_time); -MZ_EXTERN void scheme_thread_block_enable_break(float sleep_time, int enable); -MZ_EXTERN void scheme_swap_thread(Scheme_Thread *process); -MZ_EXTERN void scheme_making_progress(); - -MZ_EXTERN void scheme_weak_suspend_thread(Scheme_Thread *p); -MZ_EXTERN void scheme_weak_resume_thread(Scheme_Thread *p); - -MZ_EXTERN int scheme_block_until(Scheme_Ready_Fun f, Scheme_Needs_Wakeup_Fun, Scheme_Object *, float); -MZ_EXTERN int scheme_block_until_enable_break(Scheme_Ready_Fun f, Scheme_Needs_Wakeup_Fun, Scheme_Object *, - float, int enable); -MZ_EXTERN int scheme_block_until_unless(Scheme_Ready_Fun f, Scheme_Needs_Wakeup_Fun fdf, - Scheme_Object *data, float delay, - Scheme_Object *unless, - int enable_break); - -MZ_EXTERN void scheme_wait_input_allowed(Scheme_Input_Port *port, int nonblock); -XFORM_NONGCING MZ_EXTERN int scheme_unless_ready(Scheme_Object *unless); - -MZ_EXTERN int scheme_in_main_thread(void); - -MZ_EXTERN void scheme_cancel_sleep(void); - -MZ_EXTERN void scheme_start_sleeper_thread(void (*mzsleep)(float seconds, void *fds), float secs, void *fds, int hit_fd); -MZ_EXTERN void scheme_end_sleeper_thread(); -MZ_EXTERN void scheme_set_place_sleep(Scheme_Sleep_Proc slp); - -MZ_EXTERN void scheme_notify_sleep_progress(); - -MZ_EXTERN Scheme_Object *scheme_make_thread_cell(Scheme_Object *def_val, int inherited); -MZ_EXTERN Scheme_Object *scheme_thread_cell_get(Scheme_Object *cell, Scheme_Thread_Cell_Table *cells); -MZ_EXTERN void scheme_thread_cell_set(Scheme_Object *cell, Scheme_Thread_Cell_Table *cells, Scheme_Object *v); - -MZ_EXTERN int scheme_tls_allocate(); -MZ_EXTERN void scheme_tls_set(int pos, void *v); -MZ_EXTERN void *scheme_tls_get(int pos); - -MZ_EXTERN Scheme_Custodian *scheme_make_custodian(Scheme_Custodian *); -MZ_EXTERN Scheme_Custodian_Reference *scheme_add_managed(Scheme_Custodian *m, Scheme_Object *o, - Scheme_Close_Custodian_Client *f, void *data, - int strong); -MZ_EXTERN Scheme_Custodian_Reference *scheme_add_managed_close_on_exit(Scheme_Custodian *m, Scheme_Object *o, - Scheme_Close_Custodian_Client *f, void *data); - -MZ_EXTERN void scheme_custodian_check_available(Scheme_Custodian *m, const char *who, const char *what); -MZ_EXTERN int scheme_custodian_is_available(Scheme_Custodian *m); -MZ_EXTERN void scheme_remove_managed(Scheme_Custodian_Reference *m, Scheme_Object *o); -MZ_EXTERN void scheme_close_managed(Scheme_Custodian *m); -MZ_EXTERN void scheme_schedule_custodian_close(Scheme_Custodian *c); -MZ_EXTERN void scheme_add_custodian_extractor(Scheme_Type t, Scheme_Custodian_Extractor e); - -MZ_EXTERN int scheme_flush_managed(Scheme_Plumber *p, int catch_errors); -MZ_EXTERN Scheme_Object *scheme_add_flush(Scheme_Plumber *p, Scheme_Object *proc_or_port, int weak_flush); -MZ_EXTERN void scheme_remove_flush(Scheme_Object *h); - -MZ_EXTERN void scheme_add_atexit_closer(Scheme_Exit_Closer_Func f); -MZ_EXTERN int scheme_atexit(void (*func)(void)); - -MZ_EXTERN void scheme_add_evt(Scheme_Type type, - Scheme_Ready_Fun ready, - Scheme_Needs_Wakeup_Fun wakeup, - Scheme_Sync_Filter_Fun filter, - int can_redirect); -MZ_EXTERN void scheme_add_evt_through_sema(Scheme_Type type, - Scheme_Sync_Sema_Fun sema, - Scheme_Sync_Filter_Fun filter); -MZ_EXTERN int scheme_is_evt(Scheme_Object *o); -MZ_EXTERN Scheme_Object *scheme_sync(int argc, Scheme_Object *argv[]); -MZ_EXTERN Scheme_Object *scheme_sync_enable_break(int argc, Scheme_Object *argv[]); -MZ_EXTERN Scheme_Object *scheme_sync_timeout(int argc, Scheme_Object *argv[]); - -MZ_EXTERN Scheme_Object *scheme_make_evt_set(int argc, Scheme_Object **argv); - -MZ_EXTERN void scheme_add_swap_callback(Scheme_Closure_Func f, Scheme_Object *data); -MZ_EXTERN void scheme_add_swap_out_callback(Scheme_Closure_Func f, Scheme_Object *data); - -MZ_EXTERN Scheme_Object *scheme_call_enable_break(Scheme_Prim *prim, int argc, Scheme_Object *argv[]); -MZ_EXTERN int scheme_close_should_force_port_closed(); - -MZ_EXTERN void scheme_push_kill_action(Scheme_Kill_Action_Func f, void *d); -MZ_EXTERN void scheme_pop_kill_action(); - -MZ_EXTERN void scheme_set_can_break(int on); -MZ_EXTERN void scheme_push_break_enable(Scheme_Cont_Frame_Data *cframe, int on, int pre_check); -MZ_EXTERN void scheme_pop_break_enable(Scheme_Cont_Frame_Data *cframe, int post_check); - -MZ_EXTERN Scheme_Object *scheme_abort_continuation_no_dws(Scheme_Object *pt, Scheme_Object *v); -MZ_EXTERN Scheme_Object *scheme_call_with_composable_no_dws(Scheme_Object *proc, Scheme_Object *pt); - -MZ_EXTERN Scheme_On_Atomic_Timeout_Proc scheme_set_on_atomic_timeout(Scheme_On_Atomic_Timeout_Proc p, void *data); - -/*========================================================================*/ -/* error handling */ -/*========================================================================*/ - -MZ_EXTERN MZ_NORETURN void scheme_signal_error(const char *msg, ...); -MZ_EXTERN MZ_NORETURN void scheme_raise_exn(int exnid, ...); -MZ_EXTERN void scheme_warning(char *msg, ...); - -MZ_EXTERN void scheme_raise(Scheme_Object *exn); - -MZ_EXTERN int scheme_log_level_p(Scheme_Logger *logger, int level); -MZ_EXTERN int scheme_log_level_topic_p(Scheme_Logger *logger, int level, Scheme_Object *name); -MZ_EXTERN void scheme_log(Scheme_Logger *logger, int level, int flags, - const char *msg, ...); -MZ_EXTERN void scheme_log_w_data(Scheme_Logger *logger, int level, int flags, - Scheme_Object *data, - const char *msg, ...); -MZ_EXTERN void scheme_log_message(Scheme_Logger *logger, int level, char *buffer, intptr_t len, Scheme_Object *data); -MZ_EXTERN void scheme_log_name_message(Scheme_Logger *logger, int level, Scheme_Object *name, - char *buffer, intptr_t len, Scheme_Object *data); -MZ_EXTERN void scheme_log_name_pfx_message(Scheme_Logger *logger, int level, Scheme_Object *name, - char *buffer, intptr_t len, Scheme_Object *data, - int prefix_message); -MZ_EXTERN void scheme_log_abort(char *buffer); -MZ_EXTERN void scheme_log_warning(char *buffer); -MZ_EXTERN void scheme_glib_log_message(const char *log_domain, int log_level, const char *message, void *user_data); -MZ_EXTERN void *scheme_glib_log_message_test(char *str); -MZ_EXTERN void scheme_out_of_memory_abort(); - -MZ_EXTERN MZ_NORETURN void scheme_wrong_count(const char *name, int minc, int maxc, int argc, Scheme_Object **argv); -MZ_EXTERN MZ_NORETURN void scheme_wrong_count_m(const char *name, int minc, int maxc, int argc, Scheme_Object **argv, int is_method); -MZ_EXTERN MZ_NORETURN void scheme_case_lambda_wrong_count(const char *name, int argc, Scheme_Object **argv, int is_method, int count, ...); -MZ_EXTERN MZ_NORETURN void scheme_wrong_type(const char *name, const char *expected, int which, int argc, Scheme_Object **argv); -MZ_EXTERN MZ_NORETURN void scheme_wrong_contract(const char *name, const char *expected, int which, int argc, Scheme_Object **argv); -MZ_EXTERN MZ_NORETURN void scheme_wrong_field_type(Scheme_Object *c_name, const char *expected, Scheme_Object *o); -MZ_EXTERN MZ_NORETURN void scheme_wrong_field_contract(Scheme_Object *c_name, const char *expected, Scheme_Object *o); -MZ_EXTERN MZ_NORETURN void scheme_arg_mismatch(const char *name, const char *msg, Scheme_Object *o); -MZ_EXTERN MZ_NORETURN void scheme_contract_error(const char *name, const char *msg, ...); -MZ_EXTERN MZ_NORETURN void scheme_wrong_return_arity(const char *where, int expected, int got, Scheme_Object **argv, const char *context_detail, ...); -MZ_EXTERN MZ_NORETURN void scheme_unbound_global(Scheme_Bucket *b); - -MZ_EXTERN Scheme_Object *scheme_dynamic_wind(void (*pre)(void *), - Scheme_Object *(* volatile act)(void *), - void (* volatile post)(void *), - Scheme_Object *(*jmp_handler)(void *), - void * volatile data); - -/*========================================================================*/ -/* types */ -/*========================================================================*/ - -MZ_EXTERN Scheme_Type scheme_make_type(const char *name); - -MZ_EXTERN char *scheme_get_type_name(Scheme_Type type); -MZ_EXTERN char *scheme_get_type_name_or_null(Scheme_Type type); - -/*========================================================================*/ -/* constants */ -/*========================================================================*/ - -MZ_EXTERN Scheme_Object scheme_eof[1]; -XFORM_NONGCING MZ_EXTERN Scheme_Object *scheme_make_eof(void); -MZ_EXTERN Scheme_Object scheme_null[1]; -XFORM_NONGCING MZ_EXTERN Scheme_Object *scheme_make_null(void); -MZ_EXTERN Scheme_Object scheme_true[1]; -XFORM_NONGCING MZ_EXTERN Scheme_Object *scheme_make_true(void); -MZ_EXTERN Scheme_Object scheme_false[1]; -XFORM_NONGCING MZ_EXTERN Scheme_Object *scheme_make_false(void); -MZ_EXTERN Scheme_Object scheme_void[1]; -XFORM_NONGCING MZ_EXTERN Scheme_Object *scheme_make_void(void); -MZ_EXTERN Scheme_Object scheme_undefined[1]; -MZ_EXTERN Scheme_Object *scheme_tail_call_waiting; -MZ_EXTERN Scheme_Object *scheme_multiple_values; - -MZ_EXTERN unsigned short *scheme_uchar_table[]; -MZ_EXTERN unsigned char *scheme_uchar_cases_table[]; -MZ_EXTERN unsigned char *scheme_uchar_cats_table[]; -MZ_EXTERN int scheme_uchar_ups[]; -MZ_EXTERN int scheme_uchar_downs[]; -MZ_EXTERN int scheme_uchar_titles[]; -MZ_EXTERN int scheme_uchar_folds[]; -MZ_EXTERN unsigned char scheme_uchar_combining_classes[]; - -MZ_EXTERN void *scheme_on_demand_jit_code; - -/*========================================================================*/ -/* evaluation */ -/*========================================================================*/ - -MZ_EXTERN Scheme_Object *scheme_eval(Scheme_Object *obj, Scheme_Env *env); -MZ_EXTERN Scheme_Object *scheme_eval_multi(Scheme_Object *obj, Scheme_Env *env); -MZ_EXTERN Scheme_Object *scheme_eval_with_prompt(Scheme_Object *obj, Scheme_Env *env); -MZ_EXTERN Scheme_Object *scheme_eval_multi_with_prompt(Scheme_Object *obj, Scheme_Env *env); - -MZ_EXTERN Scheme_Object *scheme_eval_compiled(Scheme_Object *obj, Scheme_Env *env); -MZ_EXTERN Scheme_Object *scheme_eval_compiled_multi(Scheme_Object *obj, Scheme_Env *env); -MZ_EXTERN Scheme_Object *_scheme_eval_compiled(Scheme_Object *obj, Scheme_Env *env); -MZ_EXTERN Scheme_Object *_scheme_eval_compiled_multi(Scheme_Object *obj, Scheme_Env *env); - -MZ_EXTERN Scheme_Object *scheme_apply(Scheme_Object *rator, int num_rands, Scheme_Object **rands); -MZ_EXTERN Scheme_Object *scheme_apply_multi(Scheme_Object *rator, int num_rands, Scheme_Object **rands); -MZ_EXTERN Scheme_Object *scheme_apply_no_eb(Scheme_Object *rator, int num_rands, Scheme_Object **rands); -MZ_EXTERN Scheme_Object *scheme_apply_multi_no_eb(Scheme_Object *rator, int num_rands, Scheme_Object **rands); -MZ_EXTERN Scheme_Object *scheme_apply_to_list(Scheme_Object *rator, Scheme_Object *argss); -MZ_EXTERN Scheme_Object *scheme_apply_with_prompt(Scheme_Object *rator, int num_rands, Scheme_Object **rands); -MZ_EXTERN Scheme_Object *scheme_apply_multi_with_prompt(Scheme_Object *rator, int num_rands, Scheme_Object **rands); -MZ_EXTERN Scheme_Object *_scheme_apply_with_prompt(Scheme_Object *rator, int num_rands, Scheme_Object **rands); -MZ_EXTERN Scheme_Object *_scheme_apply_multi_with_prompt(Scheme_Object *rator, int num_rands, Scheme_Object **rands); -MZ_EXTERN Scheme_Object *scheme_eval_string(const char *str, Scheme_Env *env); -MZ_EXTERN Scheme_Object *scheme_eval_string_multi(const char *str, Scheme_Env *env); -MZ_EXTERN Scheme_Object *scheme_eval_string_all(const char *str, Scheme_Env *env, int all); -MZ_EXTERN Scheme_Object *scheme_eval_string_with_prompt(const char *str, Scheme_Env *env); -MZ_EXTERN Scheme_Object *scheme_eval_string_multi_with_prompt(const char *str, Scheme_Env *env); -MZ_EXTERN Scheme_Object *scheme_eval_string_all_with_prompt(const char *str, Scheme_Env *env, int all); -MZ_EXTERN Scheme_Object *scheme_eval_all_with_prompt(Scheme_Object *port, Scheme_Env *env, int all); -MZ_EXTERN Scheme_Object *scheme_eval_module_string(const char *str, Scheme_Env *env); - -MZ_EXTERN Scheme_Object *_scheme_apply_known_prim_closure(Scheme_Object *rator, int argc, - Scheme_Object **argv); -MZ_EXTERN Scheme_Object *_scheme_apply_known_prim_closure_multi(Scheme_Object *rator, int argc, - Scheme_Object **argv); -MZ_EXTERN Scheme_Object *_scheme_apply_prim_closure(Scheme_Object *rator, int argc, - Scheme_Object **argv); -MZ_EXTERN Scheme_Object *_scheme_apply_prim_closure_multi(Scheme_Object *rator, int argc, - Scheme_Object **argv); - -MZ_EXTERN Scheme_Object **scheme_current_argument_stack(); - -MZ_EXTERN Scheme_Object *scheme_call_with_prompt(Scheme_Closed_Prim f, void *data); -MZ_EXTERN Scheme_Object *scheme_call_with_prompt_multi(Scheme_Closed_Prim f, void *data); -MZ_EXTERN Scheme_Object *_scheme_call_with_prompt(Scheme_Closed_Prim f, void *data); -MZ_EXTERN Scheme_Object *_scheme_call_with_prompt_multi(Scheme_Closed_Prim f, void *data); - -MZ_EXTERN Scheme_Object *scheme_values(int c, Scheme_Object **v); - -MZ_EXTERN Scheme_Object *scheme_check_one_value(Scheme_Object *v); - -/* Tail calls - only use these when you're writing new functions/syntax */ -MZ_EXTERN Scheme_Object *scheme_tail_apply(Scheme_Object *f, int n, Scheme_Object **arg); -MZ_EXTERN Scheme_Object *scheme_tail_apply_no_copy(Scheme_Object *f, int n, Scheme_Object **arg); -MZ_EXTERN Scheme_Object *scheme_tail_apply_to_list(Scheme_Object *f, Scheme_Object *l); - -MZ_EXTERN Scheme_Object *scheme_tail_eval_expr(Scheme_Object *obj); - -MZ_EXTERN void scheme_set_tail_buffer_size(int s); -MZ_EXTERN Scheme_Object *scheme_force_value(Scheme_Object *); -MZ_EXTERN Scheme_Object *scheme_force_one_value(Scheme_Object *); - -XFORM_NONGCING MZ_EXTERN void scheme_ignore_result(Scheme_Object *); - -MZ_EXTERN MZ_MARK_STACK_TYPE scheme_set_cont_mark(Scheme_Object *key, Scheme_Object *val); -MZ_EXTERN void scheme_push_continuation_frame(Scheme_Cont_Frame_Data *); -MZ_EXTERN void scheme_pop_continuation_frame(Scheme_Cont_Frame_Data *); -MZ_EXTERN void scheme_temp_dec_mark_depth(); -MZ_EXTERN void scheme_temp_inc_mark_depth(); - -MZ_EXTERN Scheme_Object *scheme_current_continuation_marks(Scheme_Object *prompt_tag); -MZ_EXTERN Scheme_Object *scheme_extract_one_cc_mark(Scheme_Object *mark_set, - Scheme_Object *key); -MZ_EXTERN Scheme_Object *scheme_extract_one_cc_mark_to_tag(Scheme_Object *mark_set, - Scheme_Object *key, - Scheme_Object *prompt_tag); - -/* Internal */ -MZ_EXTERN Scheme_Object *scheme_do_eval(Scheme_Object *obj, int _num_rands, Scheme_Object **rands, int val); -MZ_EXTERN void scheme_detach_multple_array(Scheme_Object **a); - -/*========================================================================*/ -/* memory management */ -/*========================================================================*/ - -/* The core allocator functions depend on the GC. Macros in scheme.h */ -/* map to the apporpriate core allocation function. */ - -#ifndef SCHEME_NO_GC -# ifndef SCHEME_NO_GC_PROTO -MZ_EXTERN void *GC_malloc(size_t size_in_bytes); -MZ_EXTERN void *GC_malloc_atomic(size_t size_in_bytes); -# ifdef MZ_PRECISE_GC -MZ_EXTERN void *GC_malloc_one_tagged(size_t size_in_bytes); -MZ_EXTERN void *GC_malloc_atomic_uncollectable(size_t size_in_bytes); -MZ_EXTERN void *scheme_malloc_uncollectable(size_t size_in_bytes); -MZ_EXTERN void *GC_malloc_allow_interior(size_t size_in_bytes); -MZ_EXTERN void *GC_malloc_atomic_allow_interior(size_t size_in_bytes); -MZ_EXTERN void *GC_malloc_tagged_allow_interior(size_t size_in_bytes); -# else -MZ_EXTERN void *GC_malloc_stubborn(size_t size_in_bytes); -MZ_EXTERN void *GC_malloc_uncollectable(size_t size_in_bytes); -# endif -# endif -#endif - -MZ_EXTERN void *scheme_malloc_code(intptr_t size); -MZ_EXTERN void *scheme_malloc_permanent_code(intptr_t size); -MZ_EXTERN void scheme_free_code(void *p); -#ifndef MZ_PRECISE_GC -MZ_EXTERN void *scheme_malloc_gcable_code(intptr_t size); -#endif - - -MZ_EXTERN void *scheme_malloc_eternal(size_t n); -MZ_EXTERN void scheme_end_stubborn_change(void *p); - -MZ_EXTERN void *scheme_calloc(size_t num, size_t size); - -MZ_EXTERN char *scheme_strdup(const char *str); -MZ_EXTERN char *scheme_strdup_eternal(const char *str); - -MZ_EXTERN void *scheme_malloc_fail_ok(void *(*f)(size_t), size_t); - -#ifndef MZ_PRECISE_GC -MZ_EXTERN void scheme_late_weak_reference(void **p); -MZ_EXTERN void scheme_late_weak_reference_indirect(void **p, void *v); -MZ_EXTERN void scheme_weak_reference(void **p); -MZ_EXTERN void scheme_weak_reference_indirect(void **p, void *v); -MZ_EXTERN void scheme_unweak_reference(void **p); -#endif -MZ_EXTERN void scheme_add_finalizer(void *p, void (*f)(void *p, void *data), void *data); -MZ_EXTERN void scheme_add_finalizer_once(void *p, void (*f)(void *p, void *data), void *data); -MZ_EXTERN void scheme_subtract_finalizer(void *p, void (*f)(void *p, void *data), void *data); -MZ_EXTERN void scheme_add_scheme_finalizer(void *p, void (*f)(void *p, void *data), void *data); -MZ_EXTERN void scheme_add_scheme_finalizer_once(void *p, void (*f)(void *p, void *data), void *data); -MZ_EXTERN void scheme_register_finalizer(void *p, - void (*f)(void *p, void *data), void *data, - void (**oldf)(void *p, void *data), - void **olddata); -MZ_EXTERN void scheme_remove_all_finalization(void *p); - -MZ_EXTERN void scheme_dont_gc_ptr(void *p); -MZ_EXTERN void scheme_gc_ptr_ok(void *p); - -MZ_EXTERN void scheme_collect_garbage(void); -MZ_EXTERN void scheme_collect_garbage_minor(void); -MZ_EXTERN void scheme_enable_garbage_collection(int on); -MZ_EXTERN void scheme_incremental_garbage_collection(int on); - -#ifdef MZ_PRECISE_GC -# ifndef USE_THREAD_LOCAL -MZ_EXTERN void **GC_variable_stack; -# endif -MZ_EXTERN void GC_register_traversers(short tag, Size_Proc size, Mark_Proc mark, Fixup_Proc fixup, - int is_constant_size, int is_atomic); -MZ_EXTERN void *GC_resolve(void *p); -MZ_EXTERN void GC_mark(void *p); -MZ_EXTERN void GC_fixup(void *p); -MZ_EXTERN void *GC_fixup_self(void *p); -#endif - -MZ_EXTERN void **scheme_malloc_immobile_box(void *p); -MZ_EXTERN void scheme_free_immobile_box(void **b); - -MZ_EXTERN Scheme_Object *scheme_add_gc_callback(Scheme_Object *pre, Scheme_Object *post); -MZ_EXTERN void scheme_remove_gc_callback(Scheme_Object *key); - -MZ_EXTERN void scheme_register_type_gc_shape(Scheme_Type type, intptr_t *shape_str); - -/*========================================================================*/ -/* hash tables */ -/*========================================================================*/ - -MZ_EXTERN Scheme_Bucket_Table *scheme_make_bucket_table(intptr_t size_hint, int type); -MZ_EXTERN void scheme_add_to_table(Scheme_Bucket_Table *table, const char *key, void *val, int); -MZ_EXTERN void scheme_change_in_table(Scheme_Bucket_Table *table, const char *key, void *new_val); -MZ_EXTERN void *scheme_lookup_in_table(Scheme_Bucket_Table *table, const char *key); -MZ_EXTERN Scheme_Bucket *scheme_bucket_from_table(Scheme_Bucket_Table *table, const char *key); -MZ_EXTERN int scheme_bucket_table_equal(Scheme_Bucket_Table *t1, Scheme_Bucket_Table *t2); -MZ_EXTERN Scheme_Bucket_Table *scheme_clone_bucket_table(Scheme_Bucket_Table *bt); -MZ_EXTERN void scheme_clear_bucket_table(Scheme_Bucket_Table *bt); -XFORM_NONGCING_NONALIASING MZ_EXTERN int scheme_bucket_table_index(Scheme_Bucket_Table *hash, mzlonglong pos, Scheme_Object **_key, Scheme_Object **_val); -XFORM_NONGCING Scheme_Object *scheme_bucket_table_next(Scheme_Bucket_Table *hash, mzlonglong start); - -MZ_EXTERN Scheme_Hash_Table *scheme_make_hash_table(int type); -MZ_EXTERN Scheme_Hash_Table *scheme_make_hash_table_equal(); -MZ_EXTERN Scheme_Hash_Table *scheme_make_hash_table_eqv(); -MZ_EXTERN void scheme_hash_set(Scheme_Hash_Table *table, Scheme_Object *key, Scheme_Object *val); -MZ_EXTERN Scheme_Object *scheme_hash_get(Scheme_Hash_Table *table, Scheme_Object *key); -XFORM_NONGCING MZ_EXTERN Scheme_Object *scheme_eq_hash_get(Scheme_Hash_Table *table, Scheme_Object *key); -MZ_EXTERN void scheme_hash_set_atomic(Scheme_Hash_Table *table, Scheme_Object *key, Scheme_Object *val); -MZ_EXTERN Scheme_Object *scheme_hash_get_atomic(Scheme_Hash_Table *table, Scheme_Object *key); -MZ_EXTERN int scheme_hash_table_equal(Scheme_Hash_Table *t1, Scheme_Hash_Table *t2); -MZ_EXTERN int scheme_is_hash_table_equal(Scheme_Object *o); -MZ_EXTERN int scheme_is_hash_table_eqv(Scheme_Object *o); -MZ_EXTERN Scheme_Hash_Table *scheme_clone_hash_table(Scheme_Hash_Table *ht); -MZ_EXTERN void scheme_clear_hash_table(Scheme_Hash_Table *ht); -XFORM_NONGCING_NONALIASING MZ_EXTERN int scheme_hash_table_index(Scheme_Hash_Table *hash, mzlonglong pos, Scheme_Object **_key, Scheme_Object **_val); -XFORM_NONGCING MZ_EXTERN Scheme_Object *scheme_hash_table_next(Scheme_Hash_Table *hash, mzlonglong start); - -XFORM_NONGCING MZ_EXTERN Scheme_Hash_Tree *scheme_make_hash_tree(int kind); -MZ_EXTERN Scheme_Hash_Tree *scheme_hash_tree_set(Scheme_Hash_Tree *tree, Scheme_Object *key, Scheme_Object *val); -MZ_EXTERN Scheme_Object *scheme_hash_tree_get(Scheme_Hash_Tree *tree, Scheme_Object *key); -XFORM_NONGCING MZ_EXTERN Scheme_Object *scheme_eq_hash_tree_get(Scheme_Hash_Tree *tree, Scheme_Object *key); -XFORM_NONGCING MZ_EXTERN mzlonglong scheme_hash_tree_next(Scheme_Hash_Tree *tree, mzlonglong pos); -XFORM_NONGCING_NONALIASING MZ_EXTERN int scheme_hash_tree_index(Scheme_Hash_Tree *tree, mzlonglong pos, Scheme_Object **_key, Scheme_Object **_val); -MZ_EXTERN int scheme_hash_tree_equal(Scheme_Hash_Tree *t1, Scheme_Hash_Tree *t2); -MZ_EXTERN int scheme_is_hash_tree_equal(Scheme_Object *o); -MZ_EXTERN int scheme_is_hash_tree_eqv(Scheme_Object *o); - -/*========================================================================*/ -/* basic Scheme value constructors */ -/*========================================================================*/ - -MZ_EXTERN Scheme_Object *scheme_make_prim(Scheme_Prim *prim); -MZ_EXTERN Scheme_Object *scheme_make_noneternal_prim(Scheme_Prim *prim); -MZ_EXTERN Scheme_Object *scheme_make_prim_w_arity(Scheme_Prim *prim, const char *name, - mzshort mina, mzshort maxa); -MZ_EXTERN Scheme_Object *scheme_make_folding_prim(Scheme_Prim *prim, - const char *name, - mzshort mina, mzshort maxa, - short functional); -MZ_EXTERN Scheme_Object *scheme_make_immed_prim(Scheme_Prim *prim, - const char *name, - mzshort mina, mzshort maxa); -MZ_EXTERN Scheme_Object *scheme_make_noncm_prim(Scheme_Prim *prim, - const char *name, - mzshort mina, mzshort maxa); -MZ_EXTERN Scheme_Object *scheme_make_noneternal_prim_w_arity(Scheme_Prim *prim, - const char *name, - mzshort mina, mzshort maxa); -MZ_EXTERN Scheme_Object *scheme_make_prim_w_everything(Scheme_Prim *fun, int eternal, - const char *name, - mzshort mina, mzshort maxa, - int folding, - mzshort minr, mzshort maxr); - -MZ_EXTERN Scheme_Object *scheme_make_prim_closure_w_arity(Scheme_Primitive_Closure_Proc *prim, - int size, Scheme_Object **vals, - const char *name, - mzshort mina, mzshort maxa); -MZ_EXTERN Scheme_Object *scheme_make_folding_prim_closure(Scheme_Primitive_Closure_Proc *prim, - int size, Scheme_Object **vals, - const char *name, - mzshort mina, mzshort maxa, - short functional); - -MZ_EXTERN Scheme_Object *scheme_make_closed_prim(Scheme_Closed_Prim *prim, void *data); -MZ_EXTERN Scheme_Object *scheme_make_closed_prim_w_arity(Scheme_Closed_Prim *prim, - void *data, const char *name, - mzshort mina, mzshort maxa); -MZ_EXTERN Scheme_Object *scheme_make_folding_closed_prim(Scheme_Closed_Prim *prim, - void *data, const char *name, - mzshort mina, mzshort maxa, - short functional); -MZ_EXTERN Scheme_Object *scheme_make_closed_prim_w_everything(Scheme_Closed_Prim *fun, - void *data, - const char *name, - mzshort mina, mzshort maxa, - short folding, - mzshort minr, mzshort maxr); - -MZ_EXTERN void scheme_prim_is_method(Scheme_Object *o); - -MZ_EXTERN Scheme_Object *scheme_make_pair(Scheme_Object *car, Scheme_Object *cdr); -MZ_EXTERN Scheme_Object *scheme_make_mutable_pair(Scheme_Object *car, Scheme_Object *cdr); -MZ_EXTERN Scheme_Object *scheme_make_list_pair(Scheme_Object *car, Scheme_Object *cdr); - -MZ_EXTERN Scheme_Object *scheme_make_raw_pair(Scheme_Object *, Scheme_Object *); - -MZ_EXTERN Scheme_Object *scheme_make_byte_string(const char *chars); -MZ_EXTERN Scheme_Object *scheme_make_sized_byte_string(char *chars, intptr_t len, int copy); -MZ_EXTERN Scheme_Object *scheme_make_sized_offset_byte_string(char *chars, intptr_t d, intptr_t len, int copy); -MZ_EXTERN Scheme_Object *scheme_make_immutable_sized_byte_string(char *chars, intptr_t len, int copy); -MZ_EXTERN Scheme_Object *scheme_make_byte_string_without_copying(char *chars); -MZ_EXTERN Scheme_Object *scheme_alloc_byte_string(intptr_t size, char fill); -MZ_EXTERN Scheme_Object *scheme_append_byte_string(Scheme_Object *, Scheme_Object *); - -MZ_EXTERN Scheme_Object *scheme_make_utf8_string(const char *chars); -MZ_EXTERN Scheme_Object *scheme_make_sized_utf8_string(char *chars, intptr_t len); -MZ_EXTERN Scheme_Object *scheme_make_sized_offset_utf8_string(char *chars, intptr_t d, intptr_t len); -MZ_EXTERN Scheme_Object *scheme_make_immutable_sized_utf8_string(char *chars, intptr_t len); - -MZ_EXTERN Scheme_Object *scheme_make_locale_string(const char *chars); - -MZ_EXTERN Scheme_Object *scheme_char_string_to_byte_string(Scheme_Object *s); -MZ_EXTERN Scheme_Object *scheme_byte_string_to_char_string(Scheme_Object *s); -MZ_EXTERN Scheme_Object *scheme_char_string_to_byte_string_locale(Scheme_Object *s); -MZ_EXTERN Scheme_Object *scheme_byte_string_to_char_string_locale(Scheme_Object *s); -MZ_EXTERN Scheme_Object *scheme_char_string_to_path(Scheme_Object *p); -MZ_EXTERN Scheme_Object *scheme_path_to_char_string(Scheme_Object *p); - -MZ_EXTERN Scheme_Object *scheme_make_char_string(const mzchar *chars); -MZ_EXTERN Scheme_Object *scheme_make_sized_char_string(mzchar *chars, intptr_t len, int copy); -MZ_EXTERN Scheme_Object *scheme_make_sized_offset_char_string(mzchar *chars, intptr_t d, intptr_t len, int copy); -MZ_EXTERN Scheme_Object *scheme_make_immutable_sized_char_string(mzchar *chars, intptr_t len, int copy); -MZ_EXTERN Scheme_Object *scheme_make_char_string_without_copying(mzchar *chars); -MZ_EXTERN Scheme_Object *scheme_alloc_char_string(intptr_t size, mzchar fill); -MZ_EXTERN Scheme_Object *scheme_append_char_string(Scheme_Object *, Scheme_Object *); - -MZ_EXTERN mzchar *scheme_string_recase(mzchar *s, int d, int len, int mode, int inplace, int *_len); - -MZ_EXTERN Scheme_Object *scheme_make_vector(intptr_t size, Scheme_Object *fill); -MZ_EXTERN Scheme_Double_Vector *scheme_alloc_flvector(intptr_t size); -#ifdef MZ_LONG_DOUBLE -MZ_EXTERN Scheme_Long_Double_Vector *scheme_alloc_extflvector(intptr_t size); -#endif -MZ_EXTERN Scheme_Vector *scheme_alloc_fxvector(intptr_t size); -MZ_EXTERN Scheme_Object *scheme_make_integer_value(intptr_t i); -MZ_EXTERN Scheme_Object *scheme_make_integer_value_from_unsigned(uintptr_t i); -MZ_EXTERN Scheme_Object *scheme_make_integer_value_from_long_long(mzlonglong i); -MZ_EXTERN Scheme_Object *scheme_make_integer_value_from_unsigned_long_long(umzlonglong i); -MZ_EXTERN Scheme_Object *scheme_make_integer_value_from_long_halves(uintptr_t lowhalf, uintptr_t hihalf); -MZ_EXTERN Scheme_Object *scheme_make_integer_value_from_unsigned_long_halves(uintptr_t lowhalf, uintptr_t hihalf); -MZ_EXTERN Scheme_Object *scheme_make_double(double d); -#ifdef MZ_LONG_DOUBLE -MZ_EXTERN Scheme_Object *scheme_make_long_double(mz_long_double d); -#endif -#ifdef MZ_USE_SINGLE_FLOATS -MZ_EXTERN Scheme_Object *scheme_make_float(float f) ; -#endif -MZ_EXTERN Scheme_Object *scheme_make_char(mzchar ch); -MZ_EXTERN Scheme_Object *scheme_make_char_or_nul(mzchar ch); -MZ_EXTERN Scheme_Object *scheme_make_sema(intptr_t v); -MZ_EXTERN void scheme_post_sema(Scheme_Object *o); -MZ_EXTERN void scheme_post_sema_all(Scheme_Object *o); -MZ_EXTERN int scheme_wait_sema(Scheme_Object *o, int just_try); -XFORM_NONGCING MZ_EXTERN int scheme_try_plain_sema(Scheme_Object *o); -MZ_EXTERN Scheme_Object **scheme_char_constants; - -MZ_EXTERN Scheme_Object *scheme_make_channel(); -MZ_EXTERN Scheme_Object *scheme_make_channel_put_evt(Scheme_Object *ch, Scheme_Object *v); - -XFORM_NONGCING MZ_EXTERN int scheme_get_int_val(Scheme_Object *o, intptr_t *v); -XFORM_NONGCING MZ_EXTERN int scheme_get_unsigned_int_val(Scheme_Object *o, uintptr_t *v); -XFORM_NONGCING MZ_EXTERN int scheme_get_long_long_val(Scheme_Object *o, mzlonglong *v); -XFORM_NONGCING MZ_EXTERN int scheme_get_unsigned_long_long_val(Scheme_Object *o, umzlonglong *v); - -MZ_EXTERN double scheme_real_to_double(Scheme_Object *r); -#ifdef MZ_LONG_DOUBLE -MZ_EXTERN mz_long_double scheme_real_to_long_double(Scheme_Object *r); -#endif - -MZ_EXTERN Scheme_Object *scheme_make_cptr(void *cptr, Scheme_Object *typetag); -MZ_EXTERN Scheme_Object *scheme_make_offset_cptr(void *cptr, intptr_t offset, Scheme_Object *typetag); -MZ_EXTERN Scheme_Object *scheme_make_external_cptr(void *cptr, Scheme_Object *typetag); -MZ_EXTERN Scheme_Object *scheme_make_offset_external_cptr(void *cptr, intptr_t offset, Scheme_Object *typetag); - -MZ_EXTERN int scheme_is_cpointer(Scheme_Object *cp); - -MZ_EXTERN const char *scheme_get_proc_name(Scheme_Object *p, int *len, int for_error); - -/*========================================================================*/ -/* strings */ -/*========================================================================*/ - -MZ_EXTERN intptr_t scheme_utf8_decode(const unsigned char *s, intptr_t start, intptr_t end, - unsigned int *us, intptr_t dstart, intptr_t dend, - intptr_t *ipos, char utf16, int permissive); -MZ_EXTERN intptr_t scheme_utf8_decode_offset_prefix(const unsigned char *s, intptr_t start, intptr_t end, - unsigned int *us, intptr_t dstart, intptr_t dend, - intptr_t *ipos, char utf16, int permissive); -MZ_EXTERN intptr_t scheme_utf8_decode_as_prefix(const unsigned char *s, intptr_t start, intptr_t end, - unsigned int *us, intptr_t dstart, intptr_t dend, - intptr_t *ipos, char utf16, int permissive); -MZ_EXTERN intptr_t scheme_utf8_decode_all(const unsigned char *s, intptr_t len, unsigned int *us, - int permissive); -MZ_EXTERN intptr_t scheme_utf8_decode_prefix(const unsigned char *s, intptr_t len, unsigned int *us, - int permissive); -MZ_EXTERN mzchar *scheme_utf8_decode_to_buffer(const unsigned char *s, intptr_t len, - mzchar *buf, intptr_t blen); -MZ_EXTERN mzchar *scheme_utf8_decode_to_buffer_len(const unsigned char *s, intptr_t len, - mzchar *buf, intptr_t blen, intptr_t *rlen); -XFORM_NONGCING MZ_EXTERN intptr_t scheme_utf8_decode_count(const unsigned char *s, intptr_t start, intptr_t end, - int *_state, int might_continue, int permissive); - -MZ_EXTERN intptr_t scheme_utf8_encode(const unsigned int *us, intptr_t start, intptr_t end, - unsigned char *s, intptr_t dstart, - char utf16); -MZ_EXTERN intptr_t scheme_utf8_encode_all(const unsigned int *us, intptr_t len, unsigned char *s); - -MZ_EXTERN char *scheme_utf8_encode_to_buffer(const mzchar *s, intptr_t len, - char *buf, intptr_t blen); -MZ_EXTERN char *scheme_utf8_encode_to_buffer_len(const mzchar *s, intptr_t len, - char *buf, intptr_t blen, intptr_t *rlen); - -MZ_EXTERN unsigned short *scheme_ucs4_to_utf16(const mzchar *text, intptr_t start, intptr_t end, - unsigned short *buf, intptr_t bufsize, - intptr_t *ulen, intptr_t term_size); -MZ_EXTERN mzchar *scheme_utf16_to_ucs4(const unsigned short *text, intptr_t start, intptr_t end, - mzchar *buf, intptr_t bufsize, - intptr_t *ulen, intptr_t term_size); - -MZ_EXTERN Scheme_Object *scheme_open_converter(const char *from_e, const char *to_e); -MZ_EXTERN void scheme_close_converter(Scheme_Object *conv); - -MZ_EXTERN char *scheme_getenv(char *name); - -/*========================================================================*/ -/* bignums */ -/*========================================================================*/ - -MZ_EXTERN Scheme_Object *scheme_make_bignum(intptr_t v); -MZ_EXTERN Scheme_Object *scheme_make_bignum_from_unsigned(uintptr_t v); -MZ_EXTERN Scheme_Object *scheme_make_bignum_from_long_long(mzlonglong v); -MZ_EXTERN Scheme_Object *scheme_make_bignum_from_unsigned_long_long(umzlonglong v); -XFORM_NONGCING MZ_EXTERN double scheme_bignum_to_double(const Scheme_Object *n); -MZ_EXTERN Scheme_Object *scheme_bignum_from_double(double d); -#ifdef MZ_LONG_DOUBLE -XFORM_NONGCING MZ_EXTERN mz_long_double scheme_bignum_to_long_double(const Scheme_Object *n); -MZ_EXTERN Scheme_Object *scheme_bignum_from_long_double(mz_long_double d); -#endif -#ifdef MZ_USE_SINGLE_FLOATS -XFORM_NONGCING MZ_EXTERN float scheme_bignum_to_float(const Scheme_Object *n); -MZ_EXTERN Scheme_Object *scheme_bignum_from_float(float d); -#else -# define scheme_bignum_to_float scheme_bignum_to_double -# define scheme_bignum_from_float scheme_bignum_from_double -#endif -MZ_EXTERN char *scheme_bignum_to_string(const Scheme_Object *n, int radix); -MZ_EXTERN char *scheme_bignum_to_allocated_string(const Scheme_Object *n, int radix, int alloc); -MZ_EXTERN Scheme_Object *scheme_read_bignum(const mzchar *str, int offset, int radix); -MZ_EXTERN Scheme_Object *scheme_read_bignum_bytes(const char *str, int offset, int radix); -XFORM_NONGCING MZ_EXTERN Scheme_Object *scheme_bignum_normalize(const Scheme_Object *n); - -/*========================================================================*/ -/* rationals */ -/*========================================================================*/ - -MZ_EXTERN Scheme_Object *scheme_make_rational(const Scheme_Object *r, const Scheme_Object *d); -MZ_EXTERN double scheme_rational_to_double(const Scheme_Object *n); -MZ_EXTERN Scheme_Object *scheme_rational_from_double(double d); -#ifdef MZ_LONG_DOUBLE -MZ_EXTERN mz_long_double scheme_rational_to_long_double(const Scheme_Object *n); -MZ_EXTERN Scheme_Object *scheme_rational_from_long_double(mz_long_double d); -#endif -#ifdef MZ_USE_SINGLE_FLOATS -MZ_EXTERN float scheme_rational_to_float(const Scheme_Object *n); -MZ_EXTERN Scheme_Object *scheme_rational_from_float(float d); -#else -# define scheme_rational_to_float scheme_rational_to_double -# define scheme_rational_from_float scheme_rational_from_double -#endif -MZ_EXTERN Scheme_Object *scheme_rational_normalize(const Scheme_Object *n); -XFORM_NONGCING MZ_EXTERN Scheme_Object *scheme_rational_numerator(const Scheme_Object *n); -XFORM_NONGCING MZ_EXTERN Scheme_Object *scheme_rational_denominator(const Scheme_Object *n); - -/*========================================================================*/ -/* complexes */ -/*========================================================================*/ - -MZ_EXTERN Scheme_Object *scheme_make_complex(const Scheme_Object *r, const Scheme_Object *i); -MZ_EXTERN Scheme_Object *scheme_complex_normalize(const Scheme_Object *n); -XFORM_NONGCING MZ_EXTERN Scheme_Object *scheme_complex_real_part(const Scheme_Object *n); -XFORM_NONGCING MZ_EXTERN Scheme_Object *scheme_complex_imaginary_part(const Scheme_Object *n); - -/* Exact/inexact: */ -XFORM_NONGCING MZ_EXTERN int scheme_is_exact(const Scheme_Object *n); -XFORM_NONGCING MZ_EXTERN int scheme_is_inexact(const Scheme_Object *n); - -/*========================================================================*/ -/* macros, syntax, and compilation */ -/*========================================================================*/ - -MZ_EXTERN Scheme_Object *scheme_expand(Scheme_Object *form, Scheme_Env *env); - -MZ_EXTERN Scheme_Object *scheme_compile(Scheme_Object *form, Scheme_Env *env, int writeable); - -/*========================================================================*/ -/* ports */ -/*========================================================================*/ - -MZ_EXTERN Scheme_Object *scheme_read(Scheme_Object *port); -MZ_EXTERN Scheme_Object *scheme_read_syntax(Scheme_Object *port, Scheme_Object *stxsrc); -MZ_EXTERN void scheme_write(Scheme_Object *obj, Scheme_Object *port); -MZ_EXTERN void scheme_print(Scheme_Object *obj, Scheme_Object *port); -MZ_EXTERN void scheme_display(Scheme_Object *obj, Scheme_Object *port); -MZ_EXTERN void scheme_write_w_max(Scheme_Object *obj, Scheme_Object *port, intptr_t maxl); -MZ_EXTERN void scheme_display_w_max(Scheme_Object *obj, Scheme_Object *port, intptr_t maxl); -MZ_EXTERN void scheme_print_w_max(Scheme_Object *obj, Scheme_Object *port, intptr_t maxl); -MZ_EXTERN void scheme_write_byte_string(const char *str, intptr_t len, Scheme_Object *port); -MZ_EXTERN void scheme_write_char_string(const mzchar *str, intptr_t len, Scheme_Object *port); -MZ_EXTERN intptr_t scheme_put_byte_string(const char *who, Scheme_Object *port, - const char *str, intptr_t d, intptr_t len, - int rarely_block); -MZ_EXTERN intptr_t scheme_put_char_string(const char *who, Scheme_Object *port, - const mzchar *str, intptr_t d, intptr_t len); -MZ_EXTERN char *scheme_write_to_string(Scheme_Object *obj, intptr_t *len); -MZ_EXTERN char *scheme_display_to_string(Scheme_Object *obj, intptr_t *len); -MZ_EXTERN char *scheme_print_to_string(Scheme_Object *obj, intptr_t *len); -MZ_EXTERN char *scheme_write_to_string_w_max(Scheme_Object *obj, intptr_t *len, intptr_t maxl); -MZ_EXTERN char *scheme_display_to_string_w_max(Scheme_Object *obj, intptr_t *len, intptr_t maxl); -MZ_EXTERN char *scheme_print_to_string_w_max(Scheme_Object *obj, intptr_t *len, intptr_t maxl); -MZ_EXTERN void scheme_debug_print(Scheme_Object *obj); -MZ_EXTERN void scheme_flush_output(Scheme_Object *port); - -MZ_EXTERN char *scheme_format(mzchar *format, int flen, int argc, Scheme_Object **argv, intptr_t *rlen); -MZ_EXTERN void scheme_printf(mzchar *format, int flen, int argc, Scheme_Object **argv); -MZ_EXTERN char *scheme_format_utf8(char *format, int flen, int argc, Scheme_Object **argv, intptr_t *rlen); -MZ_EXTERN void scheme_printf_utf8(char *format, int flen, int argc, Scheme_Object **argv); - -MZ_EXTERN int scheme_getc(Scheme_Object *port); -MZ_EXTERN int scheme_get_byte(Scheme_Object *port); -MZ_EXTERN int scheme_peekc(Scheme_Object *port); -MZ_EXTERN int scheme_peek_byte(Scheme_Object *port); -MZ_EXTERN int scheme_peekc_skip(Scheme_Object *port, Scheme_Object *skip); -MZ_EXTERN int scheme_peek_byte_skip(Scheme_Object *port, Scheme_Object *skip, Scheme_Object *unless_evt); -MZ_EXTERN int scheme_getc_special_ok(Scheme_Object *port); -MZ_EXTERN int scheme_get_byte_special_ok(Scheme_Object *port); -MZ_EXTERN int scheme_peekc_special_ok(Scheme_Object *port); -MZ_EXTERN int scheme_peek_byte_special_ok_skip(Scheme_Object *port, Scheme_Object *skip, Scheme_Object *unless_evt); -MZ_EXTERN int scheme_peekc_special_ok_skip(Scheme_Object *port, Scheme_Object *skip); -MZ_EXTERN void scheme_ungetc(int ch, Scheme_Object *port); -MZ_EXTERN int scheme_byte_ready(Scheme_Object *port); -MZ_EXTERN int scheme_char_ready(Scheme_Object *port); -MZ_EXTERN int scheme_peekc_is_ungetc(Scheme_Object *port); -MZ_EXTERN void scheme_need_wakeup(Scheme_Object *port, void *fds); -MZ_EXTERN intptr_t scheme_get_byte_string(const char *who, - Scheme_Object *port, - char *buffer, intptr_t offset, intptr_t size, - int only_avail, - int peek, Scheme_Object *peek_skip); -MZ_EXTERN intptr_t scheme_get_byte_string_unless(const char *who, - Scheme_Object *port, - char *buffer, intptr_t offset, intptr_t size, - int only_avail, - int peek, Scheme_Object *peek_skip, - Scheme_Object *unless_evt); -MZ_EXTERN intptr_t scheme_get_byte_string_special_ok_unless(const char *who, - Scheme_Object *port, - char *buffer, intptr_t offset, intptr_t size, - int only_avail, - int peek, Scheme_Object *peek_skip, - Scheme_Object *unless_evt); -MZ_EXTERN Scheme_Object *scheme_progress_evt(Scheme_Object *port); -MZ_EXTERN int scheme_peeked_read(Scheme_Object *port, - intptr_t size, - Scheme_Object *unless_evt, - Scheme_Object *target_evt); -MZ_EXTERN intptr_t scheme_get_char_string(const char *who, - Scheme_Object *port, - mzchar *buffer, intptr_t offset, intptr_t size, - int peek, Scheme_Object *peek_skip); -MZ_EXTERN intptr_t scheme_get_bytes(Scheme_Object *port, intptr_t size, char *buffer, int offset); -MZ_EXTERN Scheme_Object *scheme_get_ready_special(Scheme_Object *port, Scheme_Object *stxsrc, int peek); -MZ_EXTERN intptr_t scheme_tell(Scheme_Object *port); -MZ_EXTERN intptr_t scheme_tell_can_redirect(Scheme_Object *port, int not_via_loc); -MZ_EXTERN intptr_t scheme_output_tell(Scheme_Object *port); -MZ_EXTERN intptr_t scheme_tell_line(Scheme_Object *port); -MZ_EXTERN intptr_t scheme_tell_column(Scheme_Object *port); -MZ_EXTERN void scheme_tell_all(Scheme_Object *port, intptr_t *line, intptr_t *col, intptr_t *pos); -MZ_EXTERN void scheme_set_port_location(int argc, Scheme_Object **argv); -MZ_EXTERN void scheme_count_lines(Scheme_Object *port); -MZ_EXTERN void scheme_close_input_port(Scheme_Object *port); -MZ_EXTERN void scheme_close_output_port(Scheme_Object *port); - -MZ_EXTERN Scheme_Object *scheme_write_special(int argc, Scheme_Object *argv[]); -MZ_EXTERN Scheme_Object *scheme_write_special_nonblock(int argc, Scheme_Object *argv[]); - -MZ_EXTERN Scheme_Object *scheme_make_write_evt(const char *who, Scheme_Object *port, - Scheme_Object *special, char *str, intptr_t start, intptr_t size); - -MZ_EXTERN Scheme_Port *scheme_port_record(Scheme_Object *port); -MZ_EXTERN Scheme_Input_Port *scheme_input_port_record(Scheme_Object *port); -MZ_EXTERN Scheme_Output_Port *scheme_output_port_record(Scheme_Object *port); -XFORM_NONGCING MZ_EXTERN int scheme_is_input_port(Scheme_Object *port); -XFORM_NONGCING MZ_EXTERN int scheme_is_output_port(Scheme_Object *port); - -MZ_EXTERN Scheme_Object *scheme_make_port_type(const char *name); -MZ_EXTERN Scheme_Input_Port *scheme_make_input_port(Scheme_Object *subtype, void *data, - Scheme_Object *name, - Scheme_Get_String_Fun get_byte_string_fun, - Scheme_Peek_String_Fun peek_string_fun, - Scheme_Progress_Evt_Fun progress_evt_fun, - Scheme_Peeked_Read_Fun peeked_read_fun, - Scheme_In_Ready_Fun byte_ready_fun, - Scheme_Close_Input_Fun close_fun, - Scheme_Need_Wakeup_Input_Fun need_wakeup_fun, - int must_close); -MZ_EXTERN Scheme_Output_Port *scheme_make_output_port(Scheme_Object *subtype, void *data, - Scheme_Object *name, - Scheme_Write_String_Evt_Fun write_byte_string_evt_fun, - Scheme_Write_String_Fun write_byte_string_fun, - Scheme_Out_Ready_Fun ready_fun, - Scheme_Close_Output_Fun close_fun, - Scheme_Need_Wakeup_Output_Fun need_wakeup_fun, - Scheme_Write_Special_Evt_Fun write_special_evt_fun, - Scheme_Write_Special_Fun write_special_fun, - int must_close); -MZ_EXTERN void scheme_set_next_port_custodian(Scheme_Custodian *c); - -MZ_EXTERN void scheme_set_port_location_fun(Scheme_Port *port, - Scheme_Location_Fun location_fun); -MZ_EXTERN void scheme_set_port_count_lines_fun(Scheme_Port *port, - Scheme_Count_Lines_Fun count_lines_fun); -MZ_EXTERN void scheme_port_count_lines(Scheme_Port *ip, const char *buffer, - intptr_t offset, intptr_t got); - -MZ_EXTERN Scheme_Object *scheme_progress_evt_via_get(Scheme_Input_Port *port); -MZ_EXTERN int scheme_peeked_read_via_get(Scheme_Input_Port *port, - intptr_t size, - Scheme_Object *unless_evt, - Scheme_Object *target_ch); -MZ_EXTERN Scheme_Object *scheme_write_evt_via_write(Scheme_Output_Port *port, - const char *str, intptr_t offset, intptr_t size); -MZ_EXTERN Scheme_Object *scheme_write_special_evt_via_write_special(Scheme_Output_Port *port, - Scheme_Object *special); - -MZ_EXTERN Scheme_Object *scheme_open_input_file(const char *name, const char *who); -MZ_EXTERN Scheme_Object *scheme_open_output_file(const char *name, const char *who); -MZ_EXTERN Scheme_Object *scheme_open_input_output_file(const char *name, const char *who, Scheme_Object **oport); -MZ_EXTERN Scheme_Object *scheme_open_output_file_with_mode(const char *name, const char *who, int text); - -MZ_EXTERN Scheme_Object *scheme_make_file_input_port(FILE *fp); -MZ_EXTERN Scheme_Object *scheme_make_named_file_input_port(FILE *fp, Scheme_Object *name); -MZ_EXTERN Scheme_Object *scheme_make_file_output_port(FILE *fp); - -MZ_EXTERN Scheme_Object *scheme_make_fd_input_port(int fd, Scheme_Object *name, int regfile, int win_textmode); -MZ_EXTERN Scheme_Object *scheme_make_fd_output_port(int fd, Scheme_Object *name, int regfile, int win_textmode, int read_too); - -MZ_EXTERN Scheme_Object *scheme_make_byte_string_input_port(const char *str); -MZ_EXTERN Scheme_Object *scheme_make_sized_byte_string_input_port(const char *str, intptr_t len); -MZ_EXTERN Scheme_Object *scheme_make_byte_string_output_port(); -MZ_EXTERN char *scheme_get_sized_byte_string_output(Scheme_Object *port, intptr_t *len); -MZ_EXTERN char *scheme_get_reset_sized_byte_string_output(Scheme_Object *port, intptr_t *len, int reset, intptr_t startpos, intptr_t endpos); - -MZ_EXTERN void scheme_pipe(Scheme_Object **read, Scheme_Object **write); -MZ_EXTERN void scheme_pipe_with_limit(Scheme_Object **write, Scheme_Object **read, int maxsize); - -MZ_EXTERN Scheme_Object *scheme_make_null_output_port(int can_write_special); -MZ_EXTERN Scheme_Object *scheme_make_redirect_output_port(Scheme_Object *port); - -MZ_EXTERN intptr_t scheme_set_file_position(Scheme_Object *port, intptr_t pos); - -MZ_EXTERN int scheme_file_exists(char *filename); -MZ_EXTERN int scheme_directory_exists(char *dirname); -MZ_EXTERN char *scheme_expand_filename(char* filename, int ilen, const char *errorin, int *ex, int guards); -MZ_EXTERN char *scheme_expand_user_filename(char* filename, int ilen, const char *errorin, int *ex, int guards); -MZ_EXTERN char *scheme_expand_string_filename(Scheme_Object *f, const char *errorin, int *ex, int guards); - -MZ_EXTERN char *scheme_os_getcwd(char *buf, size_t buflen, int *actlen, int noexn); -MZ_EXTERN int scheme_os_setcwd(char *buf, int noexn); -MZ_EXTERN char *scheme_getdrive(void); - -MZ_EXTERN Scheme_Object *scheme_split_path(const char *path, int len, Scheme_Object **base, int *isdir, int kind); -MZ_EXTERN Scheme_Object *scheme_build_path(int argc, Scheme_Object **argv); -MZ_EXTERN Scheme_Object *scheme_path_to_directory_path(Scheme_Object *p); -MZ_EXTERN Scheme_Object *scheme_path_to_complete_path(Scheme_Object *path, Scheme_Object *relto_path); -MZ_EXTERN Scheme_Object *scheme_simplify_path(int argc, Scheme_Object *argv[]); - -MZ_EXTERN Scheme_Object *scheme_make_path(const char *chars); -MZ_EXTERN Scheme_Object *scheme_make_sized_path(char *chars, intptr_t len, int copy); -MZ_EXTERN Scheme_Object *scheme_make_sized_offset_path(char *chars, intptr_t d, intptr_t len, int copy); -MZ_EXTERN Scheme_Object *scheme_make_sized_offset_kind_path(char *chars, intptr_t d, intptr_t len, int copy, int kind); -MZ_EXTERN Scheme_Object *scheme_make_path_without_copying(char *chars); - -MZ_EXTERN void *scheme_alloc_fdset_array(int count, int permanent); -MZ_EXTERN void *scheme_init_fdset_array(void *fdarray, int count); -MZ_EXTERN void *scheme_get_fdset(void *fdarray, int pos); -MZ_EXTERN void scheme_fdzero(void *fd); -MZ_EXTERN void scheme_fdset(void *fd, int pos); -MZ_EXTERN void scheme_fdclr(void *fd, int pos); -MZ_EXTERN int scheme_fdisset(void *fd, int pos); -MZ_EXTERN void scheme_add_fd_handle(void *h, void *fds, int repost); -MZ_EXTERN void scheme_add_fd_eventmask(void *fds, int mask); -MZ_EXTERN void scheme_collapse_win_fd(void *fds); - -MZ_EXTERN void scheme_set_wakeup_time(void *fds, double end_time); - -MZ_EXTERN void scheme_security_check_file(const char *who, const char *filename, int guards); -MZ_EXTERN void scheme_security_check_file_link(const char *who, const char *filename, const char *content); -MZ_EXTERN void scheme_security_check_network(const char *who, const char *host, int port, int client); - -MZ_EXTERN struct mz_addrinfo *scheme_get_host_address(const char *address, int id, int *err, - int family, int passive, int tcp); -MZ_EXTERN void scheme_free_host_address(struct mz_addrinfo *a); -MZ_EXTERN const char *scheme_host_address_strerror(int errnum); -MZ_EXTERN void scheme_getnameinfo(void *sa, int salen, - char *host, int hostlen, - char *serv, int servlen); - -MZ_EXTERN int scheme_get_port_file_descriptor(Scheme_Object *p, intptr_t *_fd); -MZ_EXTERN intptr_t scheme_get_port_fd(Scheme_Object *p); -MZ_EXTERN int scheme_get_port_socket(Scheme_Object *p, intptr_t *_s); -MZ_EXTERN void scheme_socket_to_ports(intptr_t s, const char *name, int takeover, - Scheme_Object **_inp, Scheme_Object **_outp); - -MZ_EXTERN Scheme_Object *scheme_fd_to_semaphore(intptr_t fd, int mode, int is_socket); - -MZ_EXTERN void scheme_set_type_printer(Scheme_Type stype, Scheme_Type_Printer printer); -MZ_EXTERN void scheme_print_bytes(Scheme_Print_Params *pp, const char *str, int offset, int len); -MZ_EXTERN void scheme_print_utf8(Scheme_Print_Params *pp, const char *str, int offset, int len); -MZ_EXTERN void scheme_print_string(Scheme_Print_Params *pp, const mzchar *str, int offset, int len); - -MZ_EXTERN Scheme_Object *scheme_read_byte_string(Scheme_Object *port); - -/*========================================================================*/ -/* namespace/environment */ -/*========================================================================*/ - -MZ_EXTERN Scheme_Object *scheme_make_namespace(int argc, Scheme_Object *argv[]); - -MZ_EXTERN void scheme_add_global(const char *name, Scheme_Object *val, Scheme_Env *env); -MZ_EXTERN void scheme_add_global_symbol(Scheme_Object *name, Scheme_Object *val, - Scheme_Env *env); - -MZ_EXTERN Scheme_Object *scheme_make_envunbox(Scheme_Object *value); - -MZ_EXTERN Scheme_Object *scheme_lookup_global(Scheme_Object *symbol, Scheme_Env *env); - -MZ_EXTERN Scheme_Bucket *scheme_global_bucket(Scheme_Object *symbol, Scheme_Env *env); -MZ_EXTERN Scheme_Bucket *scheme_module_bucket(Scheme_Object *mod, Scheme_Object *var, int pos, Scheme_Env *env); - -MZ_EXTERN Scheme_Object *scheme_builtin_value(const char *name); /* convenience */ - -MZ_EXTERN void scheme_set_global_bucket(char *proc, Scheme_Bucket *var, Scheme_Object *val, - int set_undef); - -MZ_EXTERN Scheme_Env *scheme_primitive_module(Scheme_Object *name, Scheme_Env *for_env); -MZ_EXTERN void scheme_finish_primitive_module(Scheme_Env *env); -MZ_EXTERN void scheme_set_primitive_module_phaseless(Scheme_Env *env, int phaseless); -MZ_EXTERN void scheme_protect_primitive_provide(Scheme_Env *env, Scheme_Object *name); - -MZ_EXTERN Scheme_Object *scheme_make_modidx(Scheme_Object *path, - Scheme_Object *base, - Scheme_Object *resolved); - -MZ_EXTERN Scheme_Object *scheme_dynamic_require(int argc, Scheme_Object *argv[]); -MZ_EXTERN Scheme_Object *scheme_dynamic_require_reader(int argc, Scheme_Object *argv[]); -MZ_EXTERN Scheme_Object *scheme_namespace_require(Scheme_Object *); - -MZ_EXTERN int scheme_is_module_path(Scheme_Object *); -MZ_EXTERN int scheme_is_module_path_index(Scheme_Object *); -MZ_EXTERN int scheme_is_resolved_module_path(Scheme_Object *); - -MZ_EXTERN Scheme_Object *scheme_datum_to_kernel_stx(Scheme_Object *e); - -MZ_EXTERN int scheme_module_is_declared(Scheme_Object *name, int try_load); - -/*========================================================================*/ -/* symbols */ -/*========================================================================*/ - -MZ_EXTERN Scheme_Object *scheme_intern_symbol(const char *name); -MZ_EXTERN Scheme_Object *scheme_intern_exact_symbol(const char *name, uintptr_t len); -MZ_EXTERN Scheme_Object *scheme_intern_exact_char_symbol(const mzchar *name, uintptr_t len); -MZ_EXTERN Scheme_Object *scheme_make_symbol(const char *name); /* Make uninterned */ -MZ_EXTERN Scheme_Object *scheme_make_exact_symbol(const char *name, uintptr_t len); /* Exact case */ -MZ_EXTERN Scheme_Object *scheme_make_exact_char_symbol(const mzchar *name, uintptr_t len); /* Exact case */ -MZ_EXTERN const char *scheme_symbol_name(Scheme_Object *sym); -MZ_EXTERN const char *scheme_symbol_name_and_size(Scheme_Object *sym, uintptr_t *l, int flags); -MZ_EXTERN char *scheme_symbol_val(Scheme_Object *sym); - -MZ_EXTERN Scheme_Object *scheme_intern_exact_keyword(const char *name, uintptr_t len); -MZ_EXTERN Scheme_Object *scheme_intern_exact_char_keyword(const mzchar *name, uintptr_t len); - -/*========================================================================*/ -/* structs */ -/*========================================================================*/ - -MZ_EXTERN Scheme_Object **scheme_make_struct_values(Scheme_Object *struct_type, - Scheme_Object **names, - int count, int flags); -MZ_EXTERN Scheme_Object **scheme_make_struct_names(Scheme_Object *base, - Scheme_Object *field_names, - int flags, int *count_out); -MZ_EXTERN Scheme_Object *scheme_make_struct_type(Scheme_Object *base, - Scheme_Object *parent, - Scheme_Object *inspector, - int num_fields, int num_uninit_fields, - Scheme_Object *uninit_val, - Scheme_Object *properties, - Scheme_Object *guard); -MZ_EXTERN Scheme_Object *scheme_make_struct_type2(Scheme_Object *base, - Scheme_Object *parent, - Scheme_Object *inspector, - int num_fields, int num_uninit_fields, - Scheme_Object *uninit_val, - Scheme_Object *proc_attr, - Scheme_Object *properties, - char *immutable_array, - Scheme_Object *guard); -MZ_EXTERN Scheme_Object *scheme_make_struct_instance(Scheme_Object *stype, - int argc, - Scheme_Object **argv); - -XFORM_NONGCING MZ_EXTERN int scheme_is_struct_instance(Scheme_Object *type, Scheme_Object *v); -MZ_EXTERN Scheme_Object *scheme_struct_ref(Scheme_Object *s, int pos); -MZ_EXTERN void scheme_struct_set(Scheme_Object *s, int pos, Scheme_Object *v); - -MZ_EXTERN Scheme_Object *scheme_make_struct_type_property(Scheme_Object *name); -MZ_EXTERN Scheme_Object *scheme_make_struct_type_property_w_guard(Scheme_Object *name, Scheme_Object *guard); -XFORM_NONGCING MZ_EXTERN Scheme_Object *scheme_struct_type_property_ref(Scheme_Object *prop, Scheme_Object *s); -MZ_EXTERN Scheme_Object *scheme_chaperone_struct_type_property_ref(Scheme_Object *prop, Scheme_Object *s); - -MZ_EXTERN Scheme_Object *scheme_make_location(Scheme_Object *src, - Scheme_Object *line, - Scheme_Object *col, - Scheme_Object *pos, - Scheme_Object *span); -MZ_EXTERN int scheme_is_location(Scheme_Object *o); - -MZ_EXTERN Scheme_Object *scheme_make_inspector(Scheme_Object *superior); -XFORM_NONGCING MZ_EXTERN int scheme_is_subinspector(Scheme_Object *i, Scheme_Object *sup); - -/*========================================================================*/ -/* utilities */ -/*========================================================================*/ - -XFORM_NONGCING MZ_EXTERN int scheme_eq(Scheme_Object *obj1, Scheme_Object *obj2); -XFORM_NONGCING MZ_EXTERN int scheme_eqv(Scheme_Object *obj1, Scheme_Object *obj2); -MZ_EXTERN int scheme_equal(Scheme_Object *obj1, Scheme_Object *obj2); -MZ_EXTERN int scheme_chaperone_of(Scheme_Object *obj1, Scheme_Object *obj2); -MZ_EXTERN int scheme_impersonator_of(Scheme_Object *obj1, Scheme_Object *obj2); - -#ifdef MZ_PRECISE_GC -XFORM_NONGCING MZ_EXTERN intptr_t scheme_hash_key(Scheme_Object *o); -#endif -MZ_EXTERN intptr_t scheme_equal_hash_key(Scheme_Object *o); -MZ_EXTERN intptr_t scheme_equal_hash_key2(Scheme_Object *o); -MZ_EXTERN intptr_t scheme_recur_equal_hash_key(Scheme_Object *o, void *cycle_data); -MZ_EXTERN intptr_t scheme_recur_equal_hash_key2(Scheme_Object *o, void *cycle_data); -XFORM_NONGCING MZ_EXTERN intptr_t scheme_eqv_hash_key(Scheme_Object *o); -XFORM_NONGCING MZ_EXTERN intptr_t scheme_eqv_hash_key2(Scheme_Object *o); - -MZ_EXTERN void scheme_set_type_equality(Scheme_Type type, - Scheme_Equal_Proc f, - Scheme_Primary_Hash_Proc hash1, - Scheme_Secondary_Hash_Proc hash2); -MZ_EXTERN int scheme_recur_equal(Scheme_Object *obj1, Scheme_Object *obj2, void *cycle_info); - -MZ_EXTERN Scheme_Object *scheme_build_list(int argc, Scheme_Object **argv); -MZ_EXTERN Scheme_Object *scheme_build_list_offset(int argc, Scheme_Object **argv, int delta); - -XFORM_NONGCING MZ_EXTERN int scheme_is_list(Scheme_Object *obj1); -XFORM_NONGCING MZ_EXTERN int scheme_list_length(Scheme_Object *list); -XFORM_NONGCING MZ_EXTERN int scheme_proper_list_length(Scheme_Object *list); - -MZ_EXTERN Scheme_Object *scheme_alloc_list(int size); -MZ_EXTERN Scheme_Object *scheme_map_1(Scheme_Object *(*f)(Scheme_Object*), Scheme_Object *l); - -MZ_EXTERN Scheme_Object *scheme_car(Scheme_Object *pair); -MZ_EXTERN Scheme_Object *scheme_cdr(Scheme_Object *pair); -MZ_EXTERN Scheme_Object *scheme_cadr(Scheme_Object *pair); -MZ_EXTERN Scheme_Object *scheme_caddr(Scheme_Object *pair); - -MZ_EXTERN Scheme_Object *scheme_vector_to_list(Scheme_Object *vec); -MZ_EXTERN Scheme_Object *scheme_list_to_vector(Scheme_Object *list); - -MZ_EXTERN Scheme_Object *scheme_append(Scheme_Object *lstx, Scheme_Object *lsty); -MZ_EXTERN Scheme_Object *scheme_reverse(Scheme_Object *l); - -MZ_EXTERN Scheme_Object *scheme_box(Scheme_Object *v); -MZ_EXTERN Scheme_Object *scheme_unbox(Scheme_Object *obj); -MZ_EXTERN void scheme_set_box(Scheme_Object *b, Scheme_Object *v); - -MZ_EXTERN Scheme_Object *scheme_make_weak_box(Scheme_Object *v); -MZ_EXTERN Scheme_Object *scheme_make_late_weak_box(Scheme_Object *v); - -MZ_EXTERN Scheme_Object *scheme_make_ephemeron(Scheme_Object *key, Scheme_Object *val); -MZ_EXTERN Scheme_Object *scheme_ephemeron_value(Scheme_Object *o); -MZ_EXTERN Scheme_Object *scheme_ephemeron_key(Scheme_Object *o); - -MZ_EXTERN Scheme_Object *scheme_make_late_will_executor(); - -MZ_EXTERN Scheme_Object *scheme_load(const char *file); -MZ_EXTERN Scheme_Object *scheme_load_extension(const char *filename, Scheme_Env *env); -MZ_EXTERN void scheme_register_extension_global(void *ptr, intptr_t size); - -MZ_EXTERN intptr_t scheme_get_seconds(void); -XFORM_NONGCING MZ_EXTERN uintptr_t scheme_get_milliseconds(void); -XFORM_NONGCING MZ_EXTERN double scheme_get_inexact_milliseconds(void); -XFORM_NONGCING MZ_EXTERN intptr_t scheme_get_process_milliseconds(void); -XFORM_NONGCING MZ_EXTERN intptr_t scheme_get_process_children_milliseconds(void); -XFORM_NONGCING MZ_EXTERN intptr_t scheme_get_thread_milliseconds(Scheme_Object *thrd); - -MZ_EXTERN char *scheme_banner(void); -MZ_EXTERN char *scheme_version(void); - -MZ_EXTERN int scheme_check_proc_arity(const char *where, int a, - int which, int argc, Scheme_Object **argv); -MZ_EXTERN int scheme_check_proc_arity2(const char *where, int a, - int which, int argc, Scheme_Object **argv, - int false_ok); - -MZ_EXTERN char *scheme_make_provided_string(Scheme_Object *o, int count, intptr_t *len); -MZ_EXTERN char *scheme_make_args_string(const char *s, int which, int argc, Scheme_Object **argv, intptr_t *len); -MZ_EXTERN char *scheme_make_arg_lines_string(const char *s, int which, int argc, Scheme_Object **argv, intptr_t *len); - -MZ_EXTERN const char *scheme_system_library_subpath(); - -MZ_EXTERN void scheme_signal_received(void); -MZ_EXTERN void scheme_signal_received_at(void *); -MZ_EXTERN void *scheme_get_signal_handle(); -MZ_EXTERN void scheme_wait_until_signal_received(void); - -MZ_EXTERN intptr_t scheme_char_strlen(const mzchar *s); - -MZ_EXTERN Scheme_Object *scheme_stx_extract_marks(Scheme_Object *stx); - -MZ_EXTERN int scheme_get_place_id(void); - -MZ_EXTERN Scheme_Hash_Table *scheme_get_place_table(void); -MZ_EXTERN void *scheme_register_process_global(const char *key, void *val); - -MZ_EXTERN Scheme_Object *scheme_malloc_key(void); -MZ_EXTERN void scheme_free_key(Scheme_Object *k); - -MZ_EXTERN void *scheme_jit_find_code_end(void *p); -MZ_EXTERN void scheme_jit_now(Scheme_Object *f); - -MZ_EXTERN void scheme_set_signal_handler(int sig_id, Scheme_Signal_Handler_Proc proc); diff --git a/racket/src/include/schemegc2.h b/racket/src/include/schemegc2.h deleted file mode 100644 index 50de3453e6..0000000000 --- a/racket/src/include/schemegc2.h +++ /dev/null @@ -1,666 +0,0 @@ -#ifndef __mzscheme_gc_2__ -#define __mzscheme_gc_2__ - -#ifndef GC2_JUST_MACROS -# ifdef INCLUDE_WITHOUT_PATHS -# include "schthread.h" -# else -# include "../include/schthread.h" -# endif -#endif - -# ifdef __GNUC__ -# define MAYBE_UNUSED __attribute__((unused)) -# else -# define MAYBE_UNUSED -# endif - -/***************************************************************************/ -/*** See README for a general overview of the interface architecture. ***/ -/***************************************************************************/ - -#ifndef GC2_JUST_MACROS - -struct NewGC; - -typedef int (*Size_Proc)(void *obj); -typedef int (*Size2_Proc)(void *obj, struct NewGC *); -typedef int (*Mark_Proc)(void *obj); -typedef int (*Mark2_Proc)(void *obj, struct NewGC *); -typedef int (*Fixup_Proc)(void *obj); -typedef int (*Fixup2_Proc)(void *obj, struct NewGC *); -typedef void (*GC_collect_start_callback_Proc)(void); -typedef void (*GC_collect_end_callback_Proc)(void); -typedef void (*GC_collect_inform_callback_Proc)(int master_gc, int major_gc, int inc_gc, - intptr_t pre_used, intptr_t post_used, - intptr_t pre_admin, intptr_t post_admin, - intptr_t post_child_places_used); -typedef uintptr_t (*GC_get_thread_stack_base_Proc)(void); -typedef void (*GC_Post_Propagate_Hook_Proc)(struct NewGC *); -typedef int (*GC_Treat_As_Incremental_Mark_Proc)(void *p); -/* - Types of the traversal procs (supplied by Racket); see overview in README - for information about traversals. The return value is the size of - the object in words. */ - -# ifdef GC2_JUST_MACROS_AND_TYPEDEFS -# define GC2_JUST_MACROS -# endif - -#endif - -#ifndef GC2_JUST_MACROS - -#include - -#ifndef GC2_EXTERN -# ifdef GC2_AS_EXPORT -# define GC2_EXTERN __declspec(dllexport) -# endif -# ifdef GC2_AS_IMPORT -# define GC2_EXTERN __declspec(dllimport) -# endif -# ifndef GC2_EXTERN -# define GC2_EXTERN extern -# endif -#endif - -# ifdef __cplusplus -extern "C" { -# endif - -/***************************************************************************/ -/* Administration */ -/***************************************************************************/ - -GC2_EXTERN void GC_set_get_thread_stack_base(uintptr_t (*)(void)); -/* - Sets callback called by GC to get the base for stack traversal in the current - thread (see README). The returned address must not be in the middle - of a variable-stack record. */ - -GC2_EXTERN void GC_set_stack_base(void *base); -GC2_EXTERN uintptr_t GC_get_stack_base(void); -/* - Called by Racket to set/get value used for stack base when - GC_get_thread_stack_base is null. This is mainly useful for getting - Racket started, before it has multiple threads. */ - -GC2_EXTERN void GC_add_roots(void *start, void *end); -/* - Called by Racket to install roots. The memory between - `start' (inclusive) and `end' (exclusive) contains pointers. */ - -GC2_EXTERN void GC_init_type_tags(int count, int pair, int mutable_pair, int weakbox, - int ephemeron, int weakarray, int custbox, - int phantom); -/* - Called by Racket to indicate the number of different type tags it - uses, starting from 0. `count' is always less than 256. The weakbox - argument is the value to be used for tagging weak box, the - ephemeron is the value to tagging an ephemeron, etc. (The GC has some - freedom in the layout of a weak box or ephemeron, so it performs weak - box traversals itself, but Racket gets to choose the tag.) */ - -GC2_EXTERN void GC_register_root_custodian(void *); -/* - Registers the root custodian. */ - -GC2_EXTERN void GC_register_new_thread(void *, void *); -/* - Indicates that a just-allocated point is for a thread - or place owned by a particular custodian. */ - -GC2_EXTERN void GC_register_thread(void *, void *); -/* - Indicates that a a thread or place is now owned by a - particular custodian. */ - -GC2_EXTERN GC_collect_start_callback_Proc GC_set_collect_start_callback(GC_collect_start_callback_Proc); -GC2_EXTERN GC_collect_end_callback_Proc GC_set_collect_end_callback(GC_collect_end_callback_Proc); -GC2_EXTERN void GC_set_collect_inform_callback(GC_collect_inform_callback_Proc); -GC2_EXTERN void GC_set_post_propagate_hook(GC_Post_Propagate_Hook_Proc); -GC2_EXTERN void GC_set_treat_as_incremental_mark(short tag, GC_Treat_As_Incremental_Mark_Proc); -/* - Sets callbacks called by GC before/after performing a collection. Used by - Racket to zero out some data and record collection times. The end - procedure should be called before finalizations are performed. */ - -typedef void (*GC_Out_Of_Memory_Proc)(void); -GC2_EXTERN GC_Out_Of_Memory_Proc GC_out_of_memory; -GC2_EXTERN GC_Out_Of_Memory_Proc GC_get_out_of_memory(void); -GC2_EXTERN void GC_set_out_of_memory(GC_Out_Of_Memory_Proc GC_out_of_memory); -/* - Called by GC when it can't satify a memory request. GC_out_of_memory() - might perform a longjmp. The get/set variant sets a thread-local procedure. */ - -GC2_EXTERN void (*GC_report_out_of_memory)(void); -/* - Called by GC when it has to give up, maybe due to running out of memory - during a collection. */ - -GC2_EXTERN void GC_dump(void); -/* - Dumps memory state info to stderr. */ - -GC2_EXTERN intptr_t GC_get_memory_use(void *c); -/* - Returns the number of currently-allocated bytes (specifically for - custodian c, as much as the GC's accounting makes possible). */ - -GC2_EXTERN intptr_t GC_get_memory_ever_used(); -/* - Returns the total number of allocated bytes, including - bytes that have since been reclaimed. */ - -GC2_EXTERN intptr_t GC_get_memory_max_allocated(); -/* - Returns the maximum number of bytes allocated at once, including - GC overhead but not including phantom bytes. */ - -GC2_EXTERN int GC_accouting_enabled(); -/* - Reports whether memory accounting is enabled. */ - -#define MZACCT_REQUIRE 0 -#define MZACCT_LIMIT 1 -GC2_EXTERN int GC_set_account_hook(int type, void *c1, uintptr_t b, void *c2); -/* - Set a memory-accounting property. Returns 0 for failure (i.e., not - supported). */ - -GC2_EXTERN uintptr_t GC_get_account_memory_limit(void *c1); -/* - Returns a memory accounting limit for c1 (or any ancestor), - or 0 if none is set. */ - -GC2_EXTERN void GC_set_accounting_custodian(void *c); -/* - Sets a custodian for checking memory limits for the next allocation. - This custodian should be cleared when allocation returns, but it - will be reset to NULL if a GC is triggered. */ - -GC2_EXTERN void GC_gcollect(void); -GC2_EXTERN void GC_gcollect_minor(void); -/* - Performs an immediate [full] collection. */ - -GC2_EXTERN void GC_enable_collection(int on); -/* - Performs an immediate (full) collection. */ - -GC2_EXTERN void GC_request_incremental_mode(void); -/* - Requests incremental mode; lasts until the next major collection. */ - -GC2_EXTERN void GC_set_incremental_mode(int on); -/* - Sets whether incremental mode is the default (1), always disabled (0), - or available on demand (-1). */ - -GC2_EXTERN void GC_free_all(void); -/* - Releases all memory, removes all signal handlers, etc. - This is mainly useful for unloading a DLL within an embedding - program tht will keep running. */ - -/***************************************************************************/ -/* Allocation */ -/***************************************************************************/ - -GC2_EXTERN void *GC_malloc(size_t size_in_bytes); -/* - Alloc an array of pointers, initially zeroed. */ - -GC2_EXTERN void *GC_malloc_one_tagged(size_t); -/* - Alloc a tagged item, initially zeroed. Racket sets the tag - before a collection. */ - -GC2_EXTERN void *GC_malloc_one_small_tagged(size_t); -/* - Like GC_malloc_one_tagged, but the size must be less than 1kb, - it must not be zero, and it must be a multiple of the word size. */ - -GC2_EXTERN void *GC_malloc_one_small_dirty_tagged(size_t); -/* - Like GC_malloc_one_small_tagged, but the memory is not - zeroed. The client must set all words in the allocated - object before a GC can occur. */ - -GC2_EXTERN void *GC_malloc_pair(void *car, void *cdr); -/* - Like GC_malloc_one_tagged, but even more streamlined. - The main potential advantage is that `car' and `cdr' don't - have to be retained by the callee in the case of a GC. */ - -GC2_EXTERN void *GC_malloc_atomic(size_t size_in_bytes); -/* - Alloc pointerless memory (not necessarily zeroed). */ - -#define GC_malloc_atomic_tagged GC_malloc_one_tagged -#define GC_malloc_small_atomic_tagged GC_malloc_one_small_dirty_tagged -/* - Alloc pointer-free tagged memory (not necessarily zeroed). - Racket sets the tag before a collection. */ - -GC2_EXTERN void *GC_malloc_atomic_uncollectable(size_t size_in_bytes); -/* - Like plain malloc: pointer-free, never collected. */ - -GC2_EXTERN void *GC_malloc_allow_interior(size_t size_in_bytes); -/* - Alloc an array of pointers (typically large), and recognize - pointers into the middle of the array, or just past the end of the - array. */ - -GC2_EXTERN void *GC_malloc_atomic_allow_interior(size_t size_in_bytes); -/* - Like GC_malloc_allow_interior(), but for an atomic object. */ - -GC2_EXTERN void *GC_malloc_tagged_allow_interior(size_t size_in_bytes); -/* - Like GC_malloc_allow_interior(), but for a tagged object. */ - -GC2_EXTERN void *GC_malloc_weak_array(size_t size_in_bytes, void *replace_val); -/* - Alloc an array of weak pointers, initially zeroed. When a value in - the array is collected, it's replaced by `replace-val'. The - presence of a pointer in the array doesn't keep the referenced - memory from being collected. See also README for information about - the structure of the array. */ - -GC2_EXTERN void GC_free(void *); -/* - Lets the collector optionally reverse an allocation immediately. - [Generally a no-op.] */ - -GC2_EXTERN void *GC_malloc_weak_box(void *p, void **secondary, int soffset, int is_late); -/* - Allocate a weak box. See README for details. */ - -GC2_EXTERN void *GC_malloc_ephemeron(void *p, void *p2); -/* - Allocate an ephemeron. See README for details. */ - -GC2_EXTERN void **GC_malloc_immobile_box(void *p); -GC2_EXTERN void GC_free_immobile_box(void **b); -/* - Allocate (or free) a non-GCed box containing a pointer to a GCed - value. The pointer is stored as the first longword of the box. */ - -GC2_EXTERN intptr_t GC_malloc_stays_put_threshold(); -/* - Returns a minimum size for which allocations generate - objects that never move, and where pointers are allowed - into the object's interior. */ - -GC2_EXTERN int GC_is_on_allocated_page(void *p); -/* - Returns 1 if p refers to a page of memory on which - the GC allocates objects (although p may or may not - be a valid pointer to the start of an alloctaed object). */ - -GC2_EXTERN int GC_allocate_phantom_bytes(void *pb, intptr_t); -/* - Returns 0 if allocation should fail due to a memory limit, - 1 otherwise. The representative `pb` determines who is charged. */ - -GC2_EXTERN intptr_t GC_max_nursery_object_size(); -/* - Returns a lower bound on the maximum size allowed for allocation - in the nursery. */ - -/***************************************************************************/ -/* Memory tracing */ -/***************************************************************************/ -GC2_EXTERN int GC_mtrace_new_id(void *f); -GC2_EXTERN int GC_mtrace_union_current_with(int newval); - -/***************************************************************************/ -/* Finalization */ -/***************************************************************************/ - -typedef void (*GC_finalization_proc)(void *p, void *data); -/* - Type of a finalization procedure. */ - -GC2_EXTERN void GC_set_finalizer(void *p, int tagged, int level, - GC_finalization_proc f, void *data, - GC_finalization_proc *oldf, void **olddata); -/* - See README for details. */ - -/***************************************************************************/ -/* Cooperative GC */ -/***************************************************************************/ - -THREAD_LOCAL_DECL(GC2_EXTERN void **GC_variable_stack); -/* - See the general overview in README. */ - -GC2_EXTERN void **GC_get_variable_stack(); -GC2_EXTERN void GC_set_variable_stack(void **p); - -GC2_EXTERN void GC_register_traversers(short tag, Size_Proc size, Mark_Proc mark, Fixup_Proc fixup, - int is_constant_size, int is_atomic); -GC2_EXTERN void GC_register_traversers2(short tag, Size2_Proc size, Mark2_Proc mark, Fixup2_Proc fixup, - int is_constant_size, int is_atomic); -/* - Registers a traversal procedure for a tag. Obviously, a traversal - procedure must be installed for each tag before a collection - happens where an instance of the tag as been allocated. If objects - using the tag are always of the same size, is_constant_size can be - non-zero, and `size' must return the right size given a null - pointer. If objects using the tag are atomic, is_atomic can be - non-zero. */ - -/* #define gcMARK(x) ... see below ... */ -/* #define gcMARK_TYPED(t, x) ... see below ... */ -/* #define gcMARK_TYPED_NOW(t, x) ... see below ... */ -/* #define gcFIXUP(x) ... see below ... */ -/* #define gcFIXUP_TYPED(t, x) ... see below ... */ -/* #define gcFIXUP_TYPED_NOW(t, x) ... see below ... */ -/* Macros that, given an l-value and optional type, marks the - referenced memory as live and updates the pointer as necessary - (i.e., if it's GCable memory that is moving). The `x' argument can - appear in the macro's output multiple times, and the output can be - a statement rather than a expression. - - The NOW versions force the mark or fixup to happen immediately. The - other forms can queue the mark or fixup to happen later. */ - -/* #define gcBYTES_TO_WORDS(x) ((x + 3) >> 2) */ -/* - Helpful macro for computing the return value in a traversal proc, - which must be in words. */ - -GC2_EXTERN void *GC_resolve(void *p); -GC2_EXTERN void *GC_resolve2(void *p, struct NewGC *gc); -/* - Can be called by a traversal proc to get the current address of a - object that might have been moved already. This is necessary, for - example, if the size or structure of an object depends on the - content of an object it references. For example, the size of a - class instance usually depends on a field count that is stored in - the class. In fixup mode, call this before fixing up. */ - -GC2_EXTERN void *GC_fixup_self(void *p); -/* - Can be called by a fixup proc to get the final address of the - pointer passed to the fixup proc. This is the identity function - only when objects are moved before fixup, but objects might - be moved after fixup. */ - -/* INTERNAL for the current implementation (used by macros): */ -GC2_EXTERN void GC_mark(void *p); -GC2_EXTERN void GC_fixup(void *p); -GC2_EXTERN void GC_mark2(void *p, struct NewGC *gc); -GC2_EXTERN void GC_fixup2(void *p, struct NewGC *gc); -/* - Used in the expansion of gcMARK and gcFIXUP. - - These procedures and variables are internal to the current - implementation, and are *not* part of the "official" interface. */ - -GC2_EXTERN int GC_is_marked2(const void *p, struct NewGC *gc); -/* - Reports whether p has been marked. */ - -GC2_EXTERN int GC_current_mode(struct NewGC *gc); -# define GC_CURRENT_MODE_MINOR 0 -# define GC_CURRENT_MODE_MAJOR 1 -# define GC_CURRENT_MODE_INCREMENTAL 2 -# define GC_CURRENT_MODE_INCREMENTAL_FINAL 3 -# define GC_CURRENT_MODE_BACKPOINTER_REMARK 4 -# define GC_CURRENT_MODE_ACCOUNTING 5 -/* - The mode during a mark or fixup function callback. - The GC_CURRENT_MODE_BACKPOINTER_REMARK mode corresponds - to re-traversing an old-generation object that was - formerly marked but has been mutated. */ - -GC2_EXTERN int GC_is_partial(struct NewGC *gc); -/* - Reports whether the current GC is a non-full collection - or accounting pass. GC_current_mode() is better. */ - -GC2_EXTERN int GC_started_incremental(struct NewGC *gc); -/* - Reports whether the current GC uses incremental collection. */ - -GC2_EXTERN void *GC_malloc_for_incremental(size_t amt); -/* - Use only when GC_started_incremental(); allocates - atomic memory that will be released at the end of the - next full collection, which ends the current - incremental pass. */ - -GC2_EXTERN void GC_mark_no_recur(struct NewGC *gc, int enable); -GC2_EXTERN void GC_retract_only_mark_stack_entry(void *pf, struct NewGC *gc); -/* - Used for very special collaboration with GC. */ - - -GC2_EXTERN void GC_mark_variable_stack(void **var_stack, - intptr_t delta, - void *limit, - void *stack_mem); -GC2_EXTERN void GC_fixup_variable_stack(void **var_stack, - intptr_t delta, - void *limit, - void *stack_mem); -GC2_EXTERN void GC_mark2_variable_stack(void **var_stack, - intptr_t delta, - void *limit, - void *stack_mem, - struct NewGC *gc); -GC2_EXTERN void GC_fixup2_variable_stack(void **var_stack, - intptr_t delta, - void *limit, - void *stack_mem, - struct NewGC *gc); -/* - Can be called by a mark or fixup traversal proc to traverse and - update a chunk of (atomically-allocated) memory containing an image - of the stack. - - The `var_stack' argument corresponds to the value of GC_var_stack - for the copied stack (see the overview at the top of this - file). The `var_stack' pointer refers to the address of the chain - in the original stack, not in the heap copy. The `delta' argument - specifies the difference heap_copy_address - stack_address (where - stack_address is the numerically lower bound for the copied stack - region, regardless of which direction the stack grows). The `limit' - argument corresponds to the value that would have been returned by - GC_get_thread_stack_base() at the time the stack was copied. - - The `stack_mem' argument indicates the start of the allocated memory - that contains `var_stack'. It is used for backtraces. */ - -GC2_EXTERN int GC_merely_accounting(); -/* - Can be called by a mark or fixup traversal proc to determine whether - the traversal is merely for accounting, in which case some marking - can be skipped if the corresponding data should be charged to a - different object. */ - -GC2_EXTERN void GC_write_barrier(void *p); -/* - Explicit write barrier to ensure that a write-barrier signal is not - triggered by a memory write. -*/ - -GC2_EXTERN void GC_switch_out_master_gc(); -/* - Makes the current GC the master GC. - Creates a new place specific GC and links it to the master GC. -*/ - -GC2_EXTERN struct NewGC *GC_get_current_instance(); -/* - Returns a representation of the current GC. -*/ - -GC2_EXTERN void GC_construct_child_gc(struct NewGC *parent_gc, intptr_t limit); -/* - Creates a new place-specific GC that is a child for memory-accounting - purposes of the give parent GC. If `limit' is not 0, set the maximum - amount of memory the new GC is supposed to use. -*/ - -GC2_EXTERN intptr_t GC_propagate_hierarchy_memory_use(); -/* - Notifies the parent GC (if any) of memory use by the current GC - and its children. The result is total memory use. */ - -GC2_EXTERN void GC_destruct_child_gc(); -/* - Destroys a place-specific GC once the place has finished. -*/ - -GC2_EXTERN void *GC_switch_to_master_gc(); -/* - Switches to the master GC. -*/ - -GC2_EXTERN void GC_switch_back_from_master(void *gc); -/* - Switches to back to gc from the master GC. -*/ - -GC2_EXTERN int GC_is_using_master(); -/* - Reports whether the master GC is in use after a non-master GC - has been created. -*/ - -GC2_EXTERN intptr_t GC_alloc_alignment(); -/* - Guaranteeed alignment for nusery pages. Returns a constant, and - can be called from any thread. -*/ - -GC2_EXTERN uintptr_t GC_make_jit_nursery_page(int count, uintptr_t *sz); -/* - Obtains nursery pages from the GC for thread local allocation; - resulting space is count times the allocation alignment. - The result is an uintptr_t because it's not a valid - pointer to a GCable object. The result becomes invalid (i.e. it's collected) - with the next GC. If non-NULL, the `sz' argument is filled - with the length of the allocation area after the result. -*/ - -GC2_EXTERN void GC_check_master_gc_request(); -/* - Checks to see if the master has requested a places major GC run - and executes a GC if requested -*/ - -GC2_EXTERN void GC_set_put_external_event_fd(void *fd); -/* - Sets the fd that can be passed to scheme_signal_received_at to wake up the place for GC -*/ - -GC2_EXTERN void GC_allow_master_gc_check(); -/* - Signals the GC after spawning a place that the places is sufficiently set up to participate - in master gc collections -*/ - -GC2_EXTERN void GC_create_message_allocator(); -/* - Saves off the gc->gen0 to gc->saved_allocator. - Captures all memory allocations until GC_finish_message_allocator i - is called so they can be sent to another place. -*/ - -GC2_EXTERN void *GC_finish_message_allocator(); -/* - Stops memory allocation capture. - Restores gc->saved_allocator to gc->gen0. - Returns a void* that represents the message memory captured. -*/ - -GC2_EXTERN void GC_adopt_message_allocator(void *msg_memory); -/* - Adopts the message memory captured by the sending place into - the current receiving place's gc -*/ - -GC2_EXTERN intptr_t GC_is_place(); -/* - Returns 1 if current GC is a place gc. - Otherwise returns 0; -*/ - -GC2_EXTERN int GC_message_small_objects_size(void *msg_memory, intptr_t up_to); -/* - Determines whether the message qualifies as short and whether the - total size of all objects allocated by the message allocator is less - than `up_to' - */ - -GC2_EXTERN intptr_t GC_message_allocator_size(void *msg_memory); -/* - Returns the total size of all memory pages allocated by the message allocator - */ - -GC2_EXTERN void GC_dispose_short_message_allocator(void *msg_memory); -/* - Disposes of small message allocators that were copied by the receiving place - */ - -GC2_EXTERN void GC_destroy_orphan_msg_memory(void *msg_memory); -/* - Used to destroys a message allocators that is still in the place channel queue when - the place channels finalizer is called. - */ - -GC2_EXTERN void GC_report_unsent_message_delta(intptr_t amt); -/* - Report message-in-flight size changes to the GC. This functionality is exposed, - rather than built into GC_finish_message_allocator(), GC_adpot_message_allocator(), - GC_dispose_short_message_allocator(), and GC_destroy_orphan_msg_memory(), so that - meesages to the master GC can be limited as long as the unsent message tracking - is within a factor of 2 or so. - */ - -GC2_EXTERN void GC_set_backpointer_object(void *p); -/* - Registers the current object for backpointers, which is used when backtrace - support is enabled. -*/ - -# ifdef __cplusplus -}; -# endif - -#endif - -/* Macros (implementation-specific): */ -#ifdef SIXTY_FOUR_BIT_INTEGERS -# define gcLOG_WORD_SIZE 3 -#else -# define gcLOG_WORD_SIZE 2 -#endif -#define gcMARK(x) GC_mark(&(x)) -#define gcMARK2(x, gc) GC_mark2(&(x), gc) -#define gcMARK_TYPED(t, x) gcMARK(&(x)) -#define gcMARK2_TYPED(t, x, gc) gcMARK2(&(x), gc) -#define gcMARK_TYPED_NOW(t, x) gcMARK(&(x)) -#define gcMARK2_TYPED_NOW(t, x, gc) gcMARK(&(x), gc) -#define gcFIXUP_TYPED_NOW(t, x) GC_fixup(&(x)) -#define gcFIXUP2_TYPED_NOW(t, x, gc) GC_fixup2(&(x), gc) -#define gcFIXUP_TYPED(t, x) gcFIXUP_TYPED_NOW(void*, x) -#define gcFIXUP2_TYPED(t, x, gc) gcFIXUP2_TYPED_NOW(void*, x, gc) -#define gcFIXUP(x) gcFIXUP_TYPED(void*, x) -#define gcFIXUP2(x, gc) gcFIXUP2_TYPED(void*, x, gc) -#define gcBYTES_TO_WORDS(x) ((x + (1 << gcLOG_WORD_SIZE) - 1) >> gcLOG_WORD_SIZE) -#define gcWORDS_TO_BYTES(x) (x << gcLOG_WORD_SIZE) - -#define GC_NO_SIZE_NEEDED_FROM_PROCS 1 - -#define GC_INTERIORABLES_NEVER_MOVE 1 - -#endif /* __mzscheme_gc_2__ */ diff --git a/racket/src/include/schemex.h b/racket/src/include/schemex.h deleted file mode 100644 index 2f9a678dad..0000000000 --- a/racket/src/include/schemex.h +++ /dev/null @@ -1,974 +0,0 @@ -typedef struct { -/*========================================================================*/ -/* setjmpup (continuations) */ -/*========================================================================*/ -void (*scheme_init_jmpup_buf)(Scheme_Jumpup_Buf *b); -int (*scheme_setjmpup_relative)(Scheme_Jumpup_Buf *b, void *base, - void * volatile start, struct Scheme_Cont *cont); -void (*scheme_longjmpup)(Scheme_Jumpup_Buf *b); -void (*scheme_reset_jmpup_buf)(Scheme_Jumpup_Buf *b); -#ifdef USE_MZ_SETJMP -Scheme_Setjmp_Proc (*scheme_get_mz_setjmp)(void); -int (*scheme_mz_setjmp)(mz_pre_jmp_buf b); -void (*scheme_mz_longjmp)(mz_pre_jmp_buf b, int v); -#endif -void (*scheme_clear_escape)(void); -Scheme_Jumpup_Buf_Holder *(*scheme_new_jmpupbuf_holder)(void); -/*========================================================================*/ -/* parameters */ -/*========================================================================*/ -Scheme_Config *(*scheme_current_config)(void); -Scheme_Config *(*scheme_minimal_config)(void); -Scheme_Config *(*scheme_extend_config)(Scheme_Config *c, int pos, Scheme_Object *init_val); -void (*scheme_install_config)(Scheme_Config *); -Scheme_Object *(*scheme_get_param)(Scheme_Config *c, int pos); -void (*scheme_set_param)(Scheme_Config *c, int pos, Scheme_Object *o); -Scheme_Object *(*scheme_get_thread_param)(Scheme_Config *c, Scheme_Thread_Cell_Table *cells, int pos); -void (*scheme_set_thread_param)(Scheme_Config *c, Scheme_Thread_Cell_Table *cells, int pos, Scheme_Object *o); -Scheme_Env *(*scheme_get_env)(Scheme_Config *config); -Scheme_Thread_Cell_Table *(*scheme_empty_cell_table)(); -Scheme_Thread_Cell_Table *(*scheme_inherit_cells)(Scheme_Thread_Cell_Table *cells); -Scheme_Object *(*scheme_current_break_cell)(); -/*========================================================================*/ -/* threads */ -/*========================================================================*/ -#ifndef USE_THREAD_LOCAL -# ifndef LINK_EXTENSIONS_BY_TABLE -Scheme_Thread *scheme_current_thread; -volatile int scheme_fuel_counter; -# else -Scheme_Thread **scheme_current_thread_ptr; -volatile int *scheme_fuel_counter_ptr; -# endif -#endif -Scheme_Thread *(*scheme_get_current_thread)(); -int (*scheme_is_atomic)(void); -void (*scheme_start_atomic)(void); -void (*scheme_end_atomic)(void); -void (*scheme_end_atomic_no_swap)(void); -void (*scheme_start_in_scheduler)(void); -void (*scheme_end_in_scheduler)(void); -void (*scheme_start_atomic_no_break)(void); -void (*scheme_end_atomic_can_break)(void); -void (*scheme_out_of_fuel)(void); -Scheme_Object *(*scheme_thread)(Scheme_Object *thunk); -Scheme_Object *(*scheme_thread_w_details)(Scheme_Object *thunk, - Scheme_Config *init_config, - Scheme_Thread_Cell_Table *copy_from, - Scheme_Object *break_cell, - Scheme_Custodian *owning_custodian, - int suspend_to_kill); -void (*scheme_kill_thread)(Scheme_Thread *p); -void (*scheme_break_thread)(Scheme_Thread *p); -void (*scheme_break_kind_thread)(Scheme_Thread *p, int kind); -void (*scheme_break_main_thread)(); -void (*scheme_break_main_thread_at)(void *); -void (*scheme_break_kind_main_thread_at)(void *, int kind); -void *(*scheme_get_main_thread_break_handle)(); -void (*scheme_set_break_main_target)(Scheme_Thread *p); -void (*scheme_thread_block)(float sleep_time); -void (*scheme_thread_block_enable_break)(float sleep_time, int enable); -void (*scheme_swap_thread)(Scheme_Thread *process); -void (*scheme_making_progress)(); -void (*scheme_weak_suspend_thread)(Scheme_Thread *p); -void (*scheme_weak_resume_thread)(Scheme_Thread *p); -int (*scheme_block_until)(Scheme_Ready_Fun f, Scheme_Needs_Wakeup_Fun, Scheme_Object *, float); -int (*scheme_block_until_enable_break)(Scheme_Ready_Fun f, Scheme_Needs_Wakeup_Fun, Scheme_Object *, - float, int enable); -int (*scheme_block_until_unless)(Scheme_Ready_Fun f, Scheme_Needs_Wakeup_Fun fdf, - Scheme_Object *data, float delay, - Scheme_Object *unless, - int enable_break); -void (*scheme_wait_input_allowed)(Scheme_Input_Port *port, int nonblock); -int (*scheme_unless_ready)(Scheme_Object *unless); -int (*scheme_in_main_thread)(void); -void (*scheme_cancel_sleep)(void); -void (*scheme_start_sleeper_thread)(void (*mzsleep)(float seconds, void *fds), float secs, void *fds, int hit_fd); -void (*scheme_end_sleeper_thread)(); -void (*scheme_set_place_sleep)(Scheme_Sleep_Proc slp); -void (*scheme_notify_sleep_progress)(); -Scheme_Object *(*scheme_make_thread_cell)(Scheme_Object *def_val, int inherited); -Scheme_Object *(*scheme_thread_cell_get)(Scheme_Object *cell, Scheme_Thread_Cell_Table *cells); -void (*scheme_thread_cell_set)(Scheme_Object *cell, Scheme_Thread_Cell_Table *cells, Scheme_Object *v); -int (*scheme_tls_allocate)(); -void (*scheme_tls_set)(int pos, void *v); -void *(*scheme_tls_get)(int pos); -Scheme_Custodian *(*scheme_make_custodian)(Scheme_Custodian *); -Scheme_Custodian_Reference *(*scheme_add_managed)(Scheme_Custodian *m, Scheme_Object *o, - Scheme_Close_Custodian_Client *f, void *data, - int strong); -Scheme_Custodian_Reference *(*scheme_add_managed_close_on_exit)(Scheme_Custodian *m, Scheme_Object *o, - Scheme_Close_Custodian_Client *f, void *data); -void (*scheme_custodian_check_available)(Scheme_Custodian *m, const char *who, const char *what); -int (*scheme_custodian_is_available)(Scheme_Custodian *m); -void (*scheme_remove_managed)(Scheme_Custodian_Reference *m, Scheme_Object *o); -void (*scheme_close_managed)(Scheme_Custodian *m); -void (*scheme_schedule_custodian_close)(Scheme_Custodian *c); -void (*scheme_add_custodian_extractor)(Scheme_Type t, Scheme_Custodian_Extractor e); -int (*scheme_flush_managed)(Scheme_Plumber *p, int catch_errors); -Scheme_Object *(*scheme_add_flush)(Scheme_Plumber *p, Scheme_Object *proc_or_port, int weak_flush); -void (*scheme_remove_flush)(Scheme_Object *h); -void (*scheme_add_atexit_closer)(Scheme_Exit_Closer_Func f); -int (*scheme_atexit)(void (*func)(void)); -void (*scheme_add_evt)(Scheme_Type type, - Scheme_Ready_Fun ready, - Scheme_Needs_Wakeup_Fun wakeup, - Scheme_Sync_Filter_Fun filter, - int can_redirect); -void (*scheme_add_evt_through_sema)(Scheme_Type type, - Scheme_Sync_Sema_Fun sema, - Scheme_Sync_Filter_Fun filter); -int (*scheme_is_evt)(Scheme_Object *o); -Scheme_Object *(*scheme_sync)(int argc, Scheme_Object *argv[]); -Scheme_Object *(*scheme_sync_enable_break)(int argc, Scheme_Object *argv[]); -Scheme_Object *(*scheme_sync_timeout)(int argc, Scheme_Object *argv[]); -Scheme_Object *(*scheme_make_evt_set)(int argc, Scheme_Object **argv); -void (*scheme_add_swap_callback)(Scheme_Closure_Func f, Scheme_Object *data); -void (*scheme_add_swap_out_callback)(Scheme_Closure_Func f, Scheme_Object *data); -Scheme_Object *(*scheme_call_enable_break)(Scheme_Prim *prim, int argc, Scheme_Object *argv[]); -int (*scheme_close_should_force_port_closed)(); -void (*scheme_push_kill_action)(Scheme_Kill_Action_Func f, void *d); -void (*scheme_pop_kill_action)(); -void (*scheme_set_can_break)(int on); -void (*scheme_push_break_enable)(Scheme_Cont_Frame_Data *cframe, int on, int pre_check); -void (*scheme_pop_break_enable)(Scheme_Cont_Frame_Data *cframe, int post_check); -Scheme_Object *(*scheme_abort_continuation_no_dws)(Scheme_Object *pt, Scheme_Object *v); -Scheme_Object *(*scheme_call_with_composable_no_dws)(Scheme_Object *proc, Scheme_Object *pt); -Scheme_On_Atomic_Timeout_Proc (*scheme_set_on_atomic_timeout)(Scheme_On_Atomic_Timeout_Proc p, void *data); -/*========================================================================*/ -/* error handling */ -/*========================================================================*/ -void (*scheme_signal_error)(const char *msg, ...); -void (*scheme_raise_exn)(int exnid, ...); -void (*scheme_warning)(char *msg, ...); -void (*scheme_raise)(Scheme_Object *exn); -int (*scheme_log_level_p)(Scheme_Logger *logger, int level); -int (*scheme_log_level_topic_p)(Scheme_Logger *logger, int level, Scheme_Object *name); -void (*scheme_log)(Scheme_Logger *logger, int level, int flags, - const char *msg, ...); -void (*scheme_log_w_data)(Scheme_Logger *logger, int level, int flags, - Scheme_Object *data, - const char *msg, ...); -void (*scheme_log_message)(Scheme_Logger *logger, int level, char *buffer, intptr_t len, Scheme_Object *data); -void (*scheme_log_name_message)(Scheme_Logger *logger, int level, Scheme_Object *name, - char *buffer, intptr_t len, Scheme_Object *data); -void (*scheme_log_name_pfx_message)(Scheme_Logger *logger, int level, Scheme_Object *name, - char *buffer, intptr_t len, Scheme_Object *data, - int prefix_message); -void (*scheme_log_abort)(char *buffer); -void (*scheme_log_warning)(char *buffer); -void (*scheme_glib_log_message)(const char *log_domain, int log_level, const char *message, void *user_data); -void *(*scheme_glib_log_message_test)(char *str); -void (*scheme_out_of_memory_abort)(); -void (*scheme_wrong_count)(const char *name, int minc, int maxc, int argc, Scheme_Object **argv); -void (*scheme_wrong_count_m)(const char *name, int minc, int maxc, int argc, Scheme_Object **argv, int is_method); -void (*scheme_case_lambda_wrong_count)(const char *name, int argc, Scheme_Object **argv, int is_method, int count, ...); -void (*scheme_wrong_type)(const char *name, const char *expected, int which, int argc, Scheme_Object **argv); -void (*scheme_wrong_contract)(const char *name, const char *expected, int which, int argc, Scheme_Object **argv); -void (*scheme_wrong_field_type)(Scheme_Object *c_name, const char *expected, Scheme_Object *o); -void (*scheme_wrong_field_contract)(Scheme_Object *c_name, const char *expected, Scheme_Object *o); -void (*scheme_arg_mismatch)(const char *name, const char *msg, Scheme_Object *o); -void (*scheme_contract_error)(const char *name, const char *msg, ...); -void (*scheme_wrong_return_arity)(const char *where, int expected, int got, Scheme_Object **argv, const char *context_detail, ...); -void (*scheme_unbound_global)(Scheme_Bucket *b); -Scheme_Object *(*scheme_dynamic_wind)(void (*pre)(void *), - Scheme_Object *(* volatile act)(void *), - void (* volatile post)(void *), - Scheme_Object *(*jmp_handler)(void *), - void * volatile data); -/*========================================================================*/ -/* types */ -/*========================================================================*/ -Scheme_Type (*scheme_make_type)(const char *name); -char *(*scheme_get_type_name)(Scheme_Type type); -char *(*scheme_get_type_name_or_null)(Scheme_Type type); -/*========================================================================*/ -/* constants */ -/*========================================================================*/ -Scheme_Object *scheme_eof; -Scheme_Object *(*scheme_make_eof)(void); -Scheme_Object *scheme_null; -Scheme_Object *(*scheme_make_null)(void); -Scheme_Object *scheme_true; -Scheme_Object *(*scheme_make_true)(void); -Scheme_Object *scheme_false; -Scheme_Object *(*scheme_make_false)(void); -Scheme_Object *scheme_void; -Scheme_Object *(*scheme_make_void)(void); -Scheme_Object *scheme_undefined; -Scheme_Object *scheme_tail_call_waiting; -Scheme_Object *scheme_multiple_values; -unsigned short **scheme_uchar_table; -unsigned char **scheme_uchar_cases_table; -unsigned char **scheme_uchar_cats_table; -int *scheme_uchar_ups; -int *scheme_uchar_downs; -int *scheme_uchar_titles; -int *scheme_uchar_folds; -unsigned char *scheme_uchar_combining_classes; -void *scheme_on_demand_jit_code; -/*========================================================================*/ -/* evaluation */ -/*========================================================================*/ -Scheme_Object *(*scheme_eval)(Scheme_Object *obj, Scheme_Env *env); -Scheme_Object *(*scheme_eval_multi)(Scheme_Object *obj, Scheme_Env *env); -Scheme_Object *(*scheme_eval_with_prompt)(Scheme_Object *obj, Scheme_Env *env); -Scheme_Object *(*scheme_eval_multi_with_prompt)(Scheme_Object *obj, Scheme_Env *env); -Scheme_Object *(*scheme_eval_compiled)(Scheme_Object *obj, Scheme_Env *env); -Scheme_Object *(*scheme_eval_compiled_multi)(Scheme_Object *obj, Scheme_Env *env); -Scheme_Object *(*_scheme_eval_compiled)(Scheme_Object *obj, Scheme_Env *env); -Scheme_Object *(*_scheme_eval_compiled_multi)(Scheme_Object *obj, Scheme_Env *env); -Scheme_Object *(*scheme_apply)(Scheme_Object *rator, int num_rands, Scheme_Object **rands); -Scheme_Object *(*scheme_apply_multi)(Scheme_Object *rator, int num_rands, Scheme_Object **rands); -Scheme_Object *(*scheme_apply_no_eb)(Scheme_Object *rator, int num_rands, Scheme_Object **rands); -Scheme_Object *(*scheme_apply_multi_no_eb)(Scheme_Object *rator, int num_rands, Scheme_Object **rands); -Scheme_Object *(*scheme_apply_to_list)(Scheme_Object *rator, Scheme_Object *argss); -Scheme_Object *(*scheme_apply_with_prompt)(Scheme_Object *rator, int num_rands, Scheme_Object **rands); -Scheme_Object *(*scheme_apply_multi_with_prompt)(Scheme_Object *rator, int num_rands, Scheme_Object **rands); -Scheme_Object *(*_scheme_apply_with_prompt)(Scheme_Object *rator, int num_rands, Scheme_Object **rands); -Scheme_Object *(*_scheme_apply_multi_with_prompt)(Scheme_Object *rator, int num_rands, Scheme_Object **rands); -Scheme_Object *(*scheme_eval_string)(const char *str, Scheme_Env *env); -Scheme_Object *(*scheme_eval_string_multi)(const char *str, Scheme_Env *env); -Scheme_Object *(*scheme_eval_string_all)(const char *str, Scheme_Env *env, int all); -Scheme_Object *(*scheme_eval_string_with_prompt)(const char *str, Scheme_Env *env); -Scheme_Object *(*scheme_eval_string_multi_with_prompt)(const char *str, Scheme_Env *env); -Scheme_Object *(*scheme_eval_string_all_with_prompt)(const char *str, Scheme_Env *env, int all); -Scheme_Object *(*scheme_eval_all_with_prompt)(Scheme_Object *port, Scheme_Env *env, int all); -Scheme_Object *(*scheme_eval_module_string)(const char *str, Scheme_Env *env); -Scheme_Object *(*_scheme_apply_known_prim_closure)(Scheme_Object *rator, int argc, - Scheme_Object **argv); -Scheme_Object *(*_scheme_apply_known_prim_closure_multi)(Scheme_Object *rator, int argc, - Scheme_Object **argv); -Scheme_Object *(*_scheme_apply_prim_closure)(Scheme_Object *rator, int argc, - Scheme_Object **argv); -Scheme_Object *(*_scheme_apply_prim_closure_multi)(Scheme_Object *rator, int argc, - Scheme_Object **argv); -Scheme_Object **(*scheme_current_argument_stack)(); -Scheme_Object *(*scheme_call_with_prompt)(Scheme_Closed_Prim f, void *data); -Scheme_Object *(*scheme_call_with_prompt_multi)(Scheme_Closed_Prim f, void *data); -Scheme_Object *(*_scheme_call_with_prompt)(Scheme_Closed_Prim f, void *data); -Scheme_Object *(*_scheme_call_with_prompt_multi)(Scheme_Closed_Prim f, void *data); -Scheme_Object *(*scheme_values)(int c, Scheme_Object **v); -Scheme_Object *(*scheme_check_one_value)(Scheme_Object *v); -/* Tail calls - only use these when you're writing new functions/syntax */ -Scheme_Object *(*scheme_tail_apply)(Scheme_Object *f, int n, Scheme_Object **arg); -Scheme_Object *(*scheme_tail_apply_no_copy)(Scheme_Object *f, int n, Scheme_Object **arg); -Scheme_Object *(*scheme_tail_apply_to_list)(Scheme_Object *f, Scheme_Object *l); -Scheme_Object *(*scheme_tail_eval_expr)(Scheme_Object *obj); -void (*scheme_set_tail_buffer_size)(int s); -Scheme_Object *(*scheme_force_value)(Scheme_Object *); -Scheme_Object *(*scheme_force_one_value)(Scheme_Object *); -void (*scheme_ignore_result)(Scheme_Object *); -MZ_MARK_STACK_TYPE (*scheme_set_cont_mark)(Scheme_Object *key, Scheme_Object *val); -void (*scheme_push_continuation_frame)(Scheme_Cont_Frame_Data *); -void (*scheme_pop_continuation_frame)(Scheme_Cont_Frame_Data *); -void (*scheme_temp_dec_mark_depth)(); -void (*scheme_temp_inc_mark_depth)(); -Scheme_Object *(*scheme_current_continuation_marks)(Scheme_Object *prompt_tag); -Scheme_Object *(*scheme_extract_one_cc_mark)(Scheme_Object *mark_set, - Scheme_Object *key); -Scheme_Object *(*scheme_extract_one_cc_mark_to_tag)(Scheme_Object *mark_set, - Scheme_Object *key, - Scheme_Object *prompt_tag); -/* Internal */ -Scheme_Object *(*scheme_do_eval)(Scheme_Object *obj, int _num_rands, Scheme_Object **rands, int val); -void (*scheme_detach_multple_array)(Scheme_Object **a); -/*========================================================================*/ -/* memory management */ -/*========================================================================*/ -/* The core allocator functions depend on the GC. Macros in scheme.h */ -/* map to the apporpriate core allocation function. */ -#ifndef SCHEME_NO_GC -# ifndef SCHEME_NO_GC_PROTO -void *(*GC_malloc)(size_t size_in_bytes); -void *(*GC_malloc_atomic)(size_t size_in_bytes); -# ifdef MZ_PRECISE_GC -void *(*GC_malloc_one_tagged)(size_t size_in_bytes); -void *(*GC_malloc_atomic_uncollectable)(size_t size_in_bytes); -void *(*scheme_malloc_uncollectable)(size_t size_in_bytes); -void *(*GC_malloc_allow_interior)(size_t size_in_bytes); -void *(*GC_malloc_atomic_allow_interior)(size_t size_in_bytes); -void *(*GC_malloc_tagged_allow_interior)(size_t size_in_bytes); -# else -void *(*GC_malloc_stubborn)(size_t size_in_bytes); -void *(*GC_malloc_uncollectable)(size_t size_in_bytes); -# endif -# endif -#endif -void *(*scheme_malloc_code)(intptr_t size); -void *(*scheme_malloc_permanent_code)(intptr_t size); -void (*scheme_free_code)(void *p); -#ifndef MZ_PRECISE_GC -void *(*scheme_malloc_gcable_code)(intptr_t size); -#endif -void *(*scheme_malloc_eternal)(size_t n); -void (*scheme_end_stubborn_change)(void *p); -void *(*scheme_calloc)(size_t num, size_t size); -char *(*scheme_strdup)(const char *str); -char *(*scheme_strdup_eternal)(const char *str); -void *(*scheme_malloc_fail_ok)(void *(*f)(size_t), size_t); -#ifndef MZ_PRECISE_GC -void (*scheme_late_weak_reference)(void **p); -void (*scheme_late_weak_reference_indirect)(void **p, void *v); -void (*scheme_weak_reference)(void **p); -void (*scheme_weak_reference_indirect)(void **p, void *v); -void (*scheme_unweak_reference)(void **p); -#endif -void (*scheme_add_finalizer)(void *p, void (*f)(void *p, void *data), void *data); -void (*scheme_add_finalizer_once)(void *p, void (*f)(void *p, void *data), void *data); -void (*scheme_subtract_finalizer)(void *p, void (*f)(void *p, void *data), void *data); -void (*scheme_add_scheme_finalizer)(void *p, void (*f)(void *p, void *data), void *data); -void (*scheme_add_scheme_finalizer_once)(void *p, void (*f)(void *p, void *data), void *data); -void (*scheme_register_finalizer)(void *p, - void (*f)(void *p, void *data), void *data, - void (**oldf)(void *p, void *data), - void **olddata); -void (*scheme_remove_all_finalization)(void *p); -void (*scheme_dont_gc_ptr)(void *p); -void (*scheme_gc_ptr_ok)(void *p); -void (*scheme_collect_garbage)(void); -void (*scheme_collect_garbage_minor)(void); -void (*scheme_enable_garbage_collection)(int on); -void (*scheme_incremental_garbage_collection)(int on); -#ifdef MZ_PRECISE_GC -# ifndef USE_THREAD_LOCAL -void **GC_variable_stack; -# endif -void (*GC_register_traversers)(short tag, Size_Proc size, Mark_Proc mark, Fixup_Proc fixup, - int is_constant_size, int is_atomic); -void *(*GC_resolve)(void *p); -void (*GC_mark)(void *p); -void (*GC_fixup)(void *p); -void *(*GC_fixup_self)(void *p); -#endif -void **(*scheme_malloc_immobile_box)(void *p); -void (*scheme_free_immobile_box)(void **b); -Scheme_Object *(*scheme_add_gc_callback)(Scheme_Object *pre, Scheme_Object *post); -void (*scheme_remove_gc_callback)(Scheme_Object *key); -void (*scheme_register_type_gc_shape)(Scheme_Type type, intptr_t *shape_str); -/*========================================================================*/ -/* hash tables */ -/*========================================================================*/ -Scheme_Bucket_Table *(*scheme_make_bucket_table)(intptr_t size_hint, int type); -void (*scheme_add_to_table)(Scheme_Bucket_Table *table, const char *key, void *val, int); -void (*scheme_change_in_table)(Scheme_Bucket_Table *table, const char *key, void *new_val); -void *(*scheme_lookup_in_table)(Scheme_Bucket_Table *table, const char *key); -Scheme_Bucket *(*scheme_bucket_from_table)(Scheme_Bucket_Table *table, const char *key); -int (*scheme_bucket_table_equal)(Scheme_Bucket_Table *t1, Scheme_Bucket_Table *t2); -Scheme_Bucket_Table *(*scheme_clone_bucket_table)(Scheme_Bucket_Table *bt); -void (*scheme_clear_bucket_table)(Scheme_Bucket_Table *bt); -int (*scheme_bucket_table_index)(Scheme_Bucket_Table *hash, mzlonglong pos, Scheme_Object **_key, Scheme_Object **_val); -Scheme_Object *(*scheme_bucket_table_next)(Scheme_Bucket_Table *hash, mzlonglong start); -Scheme_Hash_Table *(*scheme_make_hash_table)(int type); -Scheme_Hash_Table *(*scheme_make_hash_table_equal)(); -Scheme_Hash_Table *(*scheme_make_hash_table_eqv)(); -void (*scheme_hash_set)(Scheme_Hash_Table *table, Scheme_Object *key, Scheme_Object *val); -Scheme_Object *(*scheme_hash_get)(Scheme_Hash_Table *table, Scheme_Object *key); -Scheme_Object *(*scheme_eq_hash_get)(Scheme_Hash_Table *table, Scheme_Object *key); -void (*scheme_hash_set_atomic)(Scheme_Hash_Table *table, Scheme_Object *key, Scheme_Object *val); -Scheme_Object *(*scheme_hash_get_atomic)(Scheme_Hash_Table *table, Scheme_Object *key); -int (*scheme_hash_table_equal)(Scheme_Hash_Table *t1, Scheme_Hash_Table *t2); -int (*scheme_is_hash_table_equal)(Scheme_Object *o); -int (*scheme_is_hash_table_eqv)(Scheme_Object *o); -Scheme_Hash_Table *(*scheme_clone_hash_table)(Scheme_Hash_Table *ht); -void (*scheme_clear_hash_table)(Scheme_Hash_Table *ht); -int (*scheme_hash_table_index)(Scheme_Hash_Table *hash, mzlonglong pos, Scheme_Object **_key, Scheme_Object **_val); -Scheme_Object *(*scheme_hash_table_next)(Scheme_Hash_Table *hash, mzlonglong start); -Scheme_Hash_Tree *(*scheme_make_hash_tree)(int kind); -Scheme_Hash_Tree *(*scheme_hash_tree_set)(Scheme_Hash_Tree *tree, Scheme_Object *key, Scheme_Object *val); -Scheme_Object *(*scheme_hash_tree_get)(Scheme_Hash_Tree *tree, Scheme_Object *key); -Scheme_Object *(*scheme_eq_hash_tree_get)(Scheme_Hash_Tree *tree, Scheme_Object *key); -mzlonglong (*scheme_hash_tree_next)(Scheme_Hash_Tree *tree, mzlonglong pos); -int (*scheme_hash_tree_index)(Scheme_Hash_Tree *tree, mzlonglong pos, Scheme_Object **_key, Scheme_Object **_val); -int (*scheme_hash_tree_equal)(Scheme_Hash_Tree *t1, Scheme_Hash_Tree *t2); -int (*scheme_is_hash_tree_equal)(Scheme_Object *o); -int (*scheme_is_hash_tree_eqv)(Scheme_Object *o); -/*========================================================================*/ -/* basic Scheme value constructors */ -/*========================================================================*/ -Scheme_Object *(*scheme_make_prim)(Scheme_Prim *prim); -Scheme_Object *(*scheme_make_noneternal_prim)(Scheme_Prim *prim); -Scheme_Object *(*scheme_make_prim_w_arity)(Scheme_Prim *prim, const char *name, - mzshort mina, mzshort maxa); -Scheme_Object *(*scheme_make_folding_prim)(Scheme_Prim *prim, - const char *name, - mzshort mina, mzshort maxa, - short functional); -Scheme_Object *(*scheme_make_immed_prim)(Scheme_Prim *prim, - const char *name, - mzshort mina, mzshort maxa); -Scheme_Object *(*scheme_make_noncm_prim)(Scheme_Prim *prim, - const char *name, - mzshort mina, mzshort maxa); -Scheme_Object *(*scheme_make_noneternal_prim_w_arity)(Scheme_Prim *prim, - const char *name, - mzshort mina, mzshort maxa); -Scheme_Object *(*scheme_make_prim_w_everything)(Scheme_Prim *fun, int eternal, - const char *name, - mzshort mina, mzshort maxa, - int folding, - mzshort minr, mzshort maxr); -Scheme_Object *(*scheme_make_prim_closure_w_arity)(Scheme_Primitive_Closure_Proc *prim, - int size, Scheme_Object **vals, - const char *name, - mzshort mina, mzshort maxa); -Scheme_Object *(*scheme_make_folding_prim_closure)(Scheme_Primitive_Closure_Proc *prim, - int size, Scheme_Object **vals, - const char *name, - mzshort mina, mzshort maxa, - short functional); -Scheme_Object *(*scheme_make_closed_prim)(Scheme_Closed_Prim *prim, void *data); -Scheme_Object *(*scheme_make_closed_prim_w_arity)(Scheme_Closed_Prim *prim, - void *data, const char *name, - mzshort mina, mzshort maxa); -Scheme_Object *(*scheme_make_folding_closed_prim)(Scheme_Closed_Prim *prim, - void *data, const char *name, - mzshort mina, mzshort maxa, - short functional); -Scheme_Object *(*scheme_make_closed_prim_w_everything)(Scheme_Closed_Prim *fun, - void *data, - const char *name, - mzshort mina, mzshort maxa, - short folding, - mzshort minr, mzshort maxr); -void (*scheme_prim_is_method)(Scheme_Object *o); -Scheme_Object *(*scheme_make_pair)(Scheme_Object *car, Scheme_Object *cdr); -Scheme_Object *(*scheme_make_mutable_pair)(Scheme_Object *car, Scheme_Object *cdr); -Scheme_Object *(*scheme_make_list_pair)(Scheme_Object *car, Scheme_Object *cdr); -Scheme_Object *(*scheme_make_raw_pair)(Scheme_Object *, Scheme_Object *); -Scheme_Object *(*scheme_make_byte_string)(const char *chars); -Scheme_Object *(*scheme_make_sized_byte_string)(char *chars, intptr_t len, int copy); -Scheme_Object *(*scheme_make_sized_offset_byte_string)(char *chars, intptr_t d, intptr_t len, int copy); -Scheme_Object *(*scheme_make_immutable_sized_byte_string)(char *chars, intptr_t len, int copy); -Scheme_Object *(*scheme_make_byte_string_without_copying)(char *chars); -Scheme_Object *(*scheme_alloc_byte_string)(intptr_t size, char fill); -Scheme_Object *(*scheme_append_byte_string)(Scheme_Object *, Scheme_Object *); -Scheme_Object *(*scheme_make_utf8_string)(const char *chars); -Scheme_Object *(*scheme_make_sized_utf8_string)(char *chars, intptr_t len); -Scheme_Object *(*scheme_make_sized_offset_utf8_string)(char *chars, intptr_t d, intptr_t len); -Scheme_Object *(*scheme_make_immutable_sized_utf8_string)(char *chars, intptr_t len); -Scheme_Object *(*scheme_make_locale_string)(const char *chars); -Scheme_Object *(*scheme_char_string_to_byte_string)(Scheme_Object *s); -Scheme_Object *(*scheme_byte_string_to_char_string)(Scheme_Object *s); -Scheme_Object *(*scheme_char_string_to_byte_string_locale)(Scheme_Object *s); -Scheme_Object *(*scheme_byte_string_to_char_string_locale)(Scheme_Object *s); -Scheme_Object *(*scheme_char_string_to_path)(Scheme_Object *p); -Scheme_Object *(*scheme_path_to_char_string)(Scheme_Object *p); -Scheme_Object *(*scheme_make_char_string)(const mzchar *chars); -Scheme_Object *(*scheme_make_sized_char_string)(mzchar *chars, intptr_t len, int copy); -Scheme_Object *(*scheme_make_sized_offset_char_string)(mzchar *chars, intptr_t d, intptr_t len, int copy); -Scheme_Object *(*scheme_make_immutable_sized_char_string)(mzchar *chars, intptr_t len, int copy); -Scheme_Object *(*scheme_make_char_string_without_copying)(mzchar *chars); -Scheme_Object *(*scheme_alloc_char_string)(intptr_t size, mzchar fill); -Scheme_Object *(*scheme_append_char_string)(Scheme_Object *, Scheme_Object *); -mzchar *(*scheme_string_recase)(mzchar *s, int d, int len, int mode, int inplace, int *_len); -Scheme_Object *(*scheme_make_vector)(intptr_t size, Scheme_Object *fill); -Scheme_Double_Vector *(*scheme_alloc_flvector)(intptr_t size); -#ifdef MZ_LONG_DOUBLE -Scheme_Long_Double_Vector *(*scheme_alloc_extflvector)(intptr_t size); -#endif -Scheme_Vector *(*scheme_alloc_fxvector)(intptr_t size); -Scheme_Object *(*scheme_make_integer_value)(intptr_t i); -Scheme_Object *(*scheme_make_integer_value_from_unsigned)(uintptr_t i); -Scheme_Object *(*scheme_make_integer_value_from_long_long)(mzlonglong i); -Scheme_Object *(*scheme_make_integer_value_from_unsigned_long_long)(umzlonglong i); -Scheme_Object *(*scheme_make_integer_value_from_long_halves)(uintptr_t lowhalf, uintptr_t hihalf); -Scheme_Object *(*scheme_make_integer_value_from_unsigned_long_halves)(uintptr_t lowhalf, uintptr_t hihalf); -Scheme_Object *(*scheme_make_double)(double d); -#ifdef MZ_LONG_DOUBLE -Scheme_Object *(*scheme_make_long_double)(mz_long_double d); -#endif -#ifdef MZ_USE_SINGLE_FLOATS -Scheme_Object *(*scheme_make_float)(float f) ; -#endif -Scheme_Object *(*scheme_make_char)(mzchar ch); -Scheme_Object *(*scheme_make_char_or_nul)(mzchar ch); -Scheme_Object *(*scheme_make_sema)(intptr_t v); -void (*scheme_post_sema)(Scheme_Object *o); -void (*scheme_post_sema_all)(Scheme_Object *o); -int (*scheme_wait_sema)(Scheme_Object *o, int just_try); -int (*scheme_try_plain_sema)(Scheme_Object *o); -Scheme_Object **scheme_char_constants; -Scheme_Object *(*scheme_make_channel)(); -Scheme_Object *(*scheme_make_channel_put_evt)(Scheme_Object *ch, Scheme_Object *v); -int (*scheme_get_int_val)(Scheme_Object *o, intptr_t *v); -int (*scheme_get_unsigned_int_val)(Scheme_Object *o, uintptr_t *v); -int (*scheme_get_long_long_val)(Scheme_Object *o, mzlonglong *v); -int (*scheme_get_unsigned_long_long_val)(Scheme_Object *o, umzlonglong *v); -double (*scheme_real_to_double)(Scheme_Object *r); -#ifdef MZ_LONG_DOUBLE -mz_long_double (*scheme_real_to_long_double)(Scheme_Object *r); -#endif -Scheme_Object *(*scheme_make_cptr)(void *cptr, Scheme_Object *typetag); -Scheme_Object *(*scheme_make_offset_cptr)(void *cptr, intptr_t offset, Scheme_Object *typetag); -Scheme_Object *(*scheme_make_external_cptr)(void *cptr, Scheme_Object *typetag); -Scheme_Object *(*scheme_make_offset_external_cptr)(void *cptr, intptr_t offset, Scheme_Object *typetag); -int (*scheme_is_cpointer)(Scheme_Object *cp); -const char *(*scheme_get_proc_name)(Scheme_Object *p, int *len, int for_error); -/*========================================================================*/ -/* strings */ -/*========================================================================*/ -intptr_t (*scheme_utf8_decode)(const unsigned char *s, intptr_t start, intptr_t end, - unsigned int *us, intptr_t dstart, intptr_t dend, - intptr_t *ipos, char utf16, int permissive); -intptr_t (*scheme_utf8_decode_offset_prefix)(const unsigned char *s, intptr_t start, intptr_t end, - unsigned int *us, intptr_t dstart, intptr_t dend, - intptr_t *ipos, char utf16, int permissive); -intptr_t (*scheme_utf8_decode_as_prefix)(const unsigned char *s, intptr_t start, intptr_t end, - unsigned int *us, intptr_t dstart, intptr_t dend, - intptr_t *ipos, char utf16, int permissive); -intptr_t (*scheme_utf8_decode_all)(const unsigned char *s, intptr_t len, unsigned int *us, - int permissive); -intptr_t (*scheme_utf8_decode_prefix)(const unsigned char *s, intptr_t len, unsigned int *us, - int permissive); -mzchar *(*scheme_utf8_decode_to_buffer)(const unsigned char *s, intptr_t len, - mzchar *buf, intptr_t blen); -mzchar *(*scheme_utf8_decode_to_buffer_len)(const unsigned char *s, intptr_t len, - mzchar *buf, intptr_t blen, intptr_t *rlen); -intptr_t (*scheme_utf8_decode_count)(const unsigned char *s, intptr_t start, intptr_t end, - int *_state, int might_continue, int permissive); -intptr_t (*scheme_utf8_encode)(const unsigned int *us, intptr_t start, intptr_t end, - unsigned char *s, intptr_t dstart, - char utf16); -intptr_t (*scheme_utf8_encode_all)(const unsigned int *us, intptr_t len, unsigned char *s); -char *(*scheme_utf8_encode_to_buffer)(const mzchar *s, intptr_t len, - char *buf, intptr_t blen); -char *(*scheme_utf8_encode_to_buffer_len)(const mzchar *s, intptr_t len, - char *buf, intptr_t blen, intptr_t *rlen); -unsigned short *(*scheme_ucs4_to_utf16)(const mzchar *text, intptr_t start, intptr_t end, - unsigned short *buf, intptr_t bufsize, - intptr_t *ulen, intptr_t term_size); -mzchar *(*scheme_utf16_to_ucs4)(const unsigned short *text, intptr_t start, intptr_t end, - mzchar *buf, intptr_t bufsize, - intptr_t *ulen, intptr_t term_size); -Scheme_Object *(*scheme_open_converter)(const char *from_e, const char *to_e); -void (*scheme_close_converter)(Scheme_Object *conv); -char *(*scheme_getenv)(char *name); -/*========================================================================*/ -/* bignums */ -/*========================================================================*/ -Scheme_Object *(*scheme_make_bignum)(intptr_t v); -Scheme_Object *(*scheme_make_bignum_from_unsigned)(uintptr_t v); -Scheme_Object *(*scheme_make_bignum_from_long_long)(mzlonglong v); -Scheme_Object *(*scheme_make_bignum_from_unsigned_long_long)(umzlonglong v); -double (*scheme_bignum_to_double)(const Scheme_Object *n); -Scheme_Object *(*scheme_bignum_from_double)(double d); -#ifdef MZ_LONG_DOUBLE -mz_long_double (*scheme_bignum_to_long_double)(const Scheme_Object *n); -Scheme_Object *(*scheme_bignum_from_long_double)(mz_long_double d); -#endif -#ifdef MZ_USE_SINGLE_FLOATS -float (*scheme_bignum_to_float)(const Scheme_Object *n); -Scheme_Object *(*scheme_bignum_from_float)(float d); -#else -# define scheme_bignum_to_float scheme_bignum_to_double -# define scheme_bignum_from_float scheme_bignum_from_double -#endif -char *(*scheme_bignum_to_string)(const Scheme_Object *n, int radix); -char *(*scheme_bignum_to_allocated_string)(const Scheme_Object *n, int radix, int alloc); -Scheme_Object *(*scheme_read_bignum)(const mzchar *str, int offset, int radix); -Scheme_Object *(*scheme_read_bignum_bytes)(const char *str, int offset, int radix); -Scheme_Object *(*scheme_bignum_normalize)(const Scheme_Object *n); -/*========================================================================*/ -/* rationals */ -/*========================================================================*/ -Scheme_Object *(*scheme_make_rational)(const Scheme_Object *r, const Scheme_Object *d); -double (*scheme_rational_to_double)(const Scheme_Object *n); -Scheme_Object *(*scheme_rational_from_double)(double d); -#ifdef MZ_LONG_DOUBLE -mz_long_double (*scheme_rational_to_long_double)(const Scheme_Object *n); -Scheme_Object *(*scheme_rational_from_long_double)(mz_long_double d); -#endif -#ifdef MZ_USE_SINGLE_FLOATS -float (*scheme_rational_to_float)(const Scheme_Object *n); -Scheme_Object *(*scheme_rational_from_float)(float d); -#else -# define scheme_rational_to_float scheme_rational_to_double -# define scheme_rational_from_float scheme_rational_from_double -#endif -Scheme_Object *(*scheme_rational_normalize)(const Scheme_Object *n); -Scheme_Object *(*scheme_rational_numerator)(const Scheme_Object *n); -Scheme_Object *(*scheme_rational_denominator)(const Scheme_Object *n); -/*========================================================================*/ -/* complexes */ -/*========================================================================*/ -Scheme_Object *(*scheme_make_complex)(const Scheme_Object *r, const Scheme_Object *i); -Scheme_Object *(*scheme_complex_normalize)(const Scheme_Object *n); -Scheme_Object *(*scheme_complex_real_part)(const Scheme_Object *n); -Scheme_Object *(*scheme_complex_imaginary_part)(const Scheme_Object *n); -/* Exact/inexact: */ -int (*scheme_is_exact)(const Scheme_Object *n); -int (*scheme_is_inexact)(const Scheme_Object *n); -/*========================================================================*/ -/* macros, syntax, and compilation */ -/*========================================================================*/ -Scheme_Object *(*scheme_expand)(Scheme_Object *form, Scheme_Env *env); -Scheme_Object *(*scheme_compile)(Scheme_Object *form, Scheme_Env *env, int writeable); -/*========================================================================*/ -/* ports */ -/*========================================================================*/ -Scheme_Object *(*scheme_read)(Scheme_Object *port); -Scheme_Object *(*scheme_read_syntax)(Scheme_Object *port, Scheme_Object *stxsrc); -void (*scheme_write)(Scheme_Object *obj, Scheme_Object *port); -void (*scheme_print)(Scheme_Object *obj, Scheme_Object *port); -void (*scheme_display)(Scheme_Object *obj, Scheme_Object *port); -void (*scheme_write_w_max)(Scheme_Object *obj, Scheme_Object *port, intptr_t maxl); -void (*scheme_display_w_max)(Scheme_Object *obj, Scheme_Object *port, intptr_t maxl); -void (*scheme_print_w_max)(Scheme_Object *obj, Scheme_Object *port, intptr_t maxl); -void (*scheme_write_byte_string)(const char *str, intptr_t len, Scheme_Object *port); -void (*scheme_write_char_string)(const mzchar *str, intptr_t len, Scheme_Object *port); -intptr_t (*scheme_put_byte_string)(const char *who, Scheme_Object *port, - const char *str, intptr_t d, intptr_t len, - int rarely_block); -intptr_t (*scheme_put_char_string)(const char *who, Scheme_Object *port, - const mzchar *str, intptr_t d, intptr_t len); -char *(*scheme_write_to_string)(Scheme_Object *obj, intptr_t *len); -char *(*scheme_display_to_string)(Scheme_Object *obj, intptr_t *len); -char *(*scheme_print_to_string)(Scheme_Object *obj, intptr_t *len); -char *(*scheme_write_to_string_w_max)(Scheme_Object *obj, intptr_t *len, intptr_t maxl); -char *(*scheme_display_to_string_w_max)(Scheme_Object *obj, intptr_t *len, intptr_t maxl); -char *(*scheme_print_to_string_w_max)(Scheme_Object *obj, intptr_t *len, intptr_t maxl); -void (*scheme_debug_print)(Scheme_Object *obj); -void (*scheme_flush_output)(Scheme_Object *port); -char *(*scheme_format)(mzchar *format, int flen, int argc, Scheme_Object **argv, intptr_t *rlen); -void (*scheme_printf)(mzchar *format, int flen, int argc, Scheme_Object **argv); -char *(*scheme_format_utf8)(char *format, int flen, int argc, Scheme_Object **argv, intptr_t *rlen); -void (*scheme_printf_utf8)(char *format, int flen, int argc, Scheme_Object **argv); -int (*scheme_getc)(Scheme_Object *port); -int (*scheme_get_byte)(Scheme_Object *port); -int (*scheme_peekc)(Scheme_Object *port); -int (*scheme_peek_byte)(Scheme_Object *port); -int (*scheme_peekc_skip)(Scheme_Object *port, Scheme_Object *skip); -int (*scheme_peek_byte_skip)(Scheme_Object *port, Scheme_Object *skip, Scheme_Object *unless_evt); -int (*scheme_getc_special_ok)(Scheme_Object *port); -int (*scheme_get_byte_special_ok)(Scheme_Object *port); -int (*scheme_peekc_special_ok)(Scheme_Object *port); -int (*scheme_peek_byte_special_ok_skip)(Scheme_Object *port, Scheme_Object *skip, Scheme_Object *unless_evt); -int (*scheme_peekc_special_ok_skip)(Scheme_Object *port, Scheme_Object *skip); -void (*scheme_ungetc)(int ch, Scheme_Object *port); -int (*scheme_byte_ready)(Scheme_Object *port); -int (*scheme_char_ready)(Scheme_Object *port); -int (*scheme_peekc_is_ungetc)(Scheme_Object *port); -void (*scheme_need_wakeup)(Scheme_Object *port, void *fds); -intptr_t (*scheme_get_byte_string)(const char *who, - Scheme_Object *port, - char *buffer, intptr_t offset, intptr_t size, - int only_avail, - int peek, Scheme_Object *peek_skip); -intptr_t (*scheme_get_byte_string_unless)(const char *who, - Scheme_Object *port, - char *buffer, intptr_t offset, intptr_t size, - int only_avail, - int peek, Scheme_Object *peek_skip, - Scheme_Object *unless_evt); -intptr_t (*scheme_get_byte_string_special_ok_unless)(const char *who, - Scheme_Object *port, - char *buffer, intptr_t offset, intptr_t size, - int only_avail, - int peek, Scheme_Object *peek_skip, - Scheme_Object *unless_evt); -Scheme_Object *(*scheme_progress_evt)(Scheme_Object *port); -int (*scheme_peeked_read)(Scheme_Object *port, - intptr_t size, - Scheme_Object *unless_evt, - Scheme_Object *target_evt); -intptr_t (*scheme_get_char_string)(const char *who, - Scheme_Object *port, - mzchar *buffer, intptr_t offset, intptr_t size, - int peek, Scheme_Object *peek_skip); -intptr_t (*scheme_get_bytes)(Scheme_Object *port, intptr_t size, char *buffer, int offset); -Scheme_Object *(*scheme_get_ready_special)(Scheme_Object *port, Scheme_Object *stxsrc, int peek); -intptr_t (*scheme_tell)(Scheme_Object *port); -intptr_t (*scheme_tell_can_redirect)(Scheme_Object *port, int not_via_loc); -intptr_t (*scheme_output_tell)(Scheme_Object *port); -intptr_t (*scheme_tell_line)(Scheme_Object *port); -intptr_t (*scheme_tell_column)(Scheme_Object *port); -void (*scheme_tell_all)(Scheme_Object *port, intptr_t *line, intptr_t *col, intptr_t *pos); -void (*scheme_set_port_location)(int argc, Scheme_Object **argv); -void (*scheme_count_lines)(Scheme_Object *port); -void (*scheme_close_input_port)(Scheme_Object *port); -void (*scheme_close_output_port)(Scheme_Object *port); -Scheme_Object *(*scheme_write_special)(int argc, Scheme_Object *argv[]); -Scheme_Object *(*scheme_write_special_nonblock)(int argc, Scheme_Object *argv[]); -Scheme_Object *(*scheme_make_write_evt)(const char *who, Scheme_Object *port, - Scheme_Object *special, char *str, intptr_t start, intptr_t size); -Scheme_Port *(*scheme_port_record)(Scheme_Object *port); -Scheme_Input_Port *(*scheme_input_port_record)(Scheme_Object *port); -Scheme_Output_Port *(*scheme_output_port_record)(Scheme_Object *port); -int (*scheme_is_input_port)(Scheme_Object *port); -int (*scheme_is_output_port)(Scheme_Object *port); -Scheme_Object *(*scheme_make_port_type)(const char *name); -Scheme_Input_Port *(*scheme_make_input_port)(Scheme_Object *subtype, void *data, - Scheme_Object *name, - Scheme_Get_String_Fun get_byte_string_fun, - Scheme_Peek_String_Fun peek_string_fun, - Scheme_Progress_Evt_Fun progress_evt_fun, - Scheme_Peeked_Read_Fun peeked_read_fun, - Scheme_In_Ready_Fun byte_ready_fun, - Scheme_Close_Input_Fun close_fun, - Scheme_Need_Wakeup_Input_Fun need_wakeup_fun, - int must_close); -Scheme_Output_Port *(*scheme_make_output_port)(Scheme_Object *subtype, void *data, - Scheme_Object *name, - Scheme_Write_String_Evt_Fun write_byte_string_evt_fun, - Scheme_Write_String_Fun write_byte_string_fun, - Scheme_Out_Ready_Fun ready_fun, - Scheme_Close_Output_Fun close_fun, - Scheme_Need_Wakeup_Output_Fun need_wakeup_fun, - Scheme_Write_Special_Evt_Fun write_special_evt_fun, - Scheme_Write_Special_Fun write_special_fun, - int must_close); -void (*scheme_set_next_port_custodian)(Scheme_Custodian *c); -void (*scheme_set_port_location_fun)(Scheme_Port *port, - Scheme_Location_Fun location_fun); -void (*scheme_set_port_count_lines_fun)(Scheme_Port *port, - Scheme_Count_Lines_Fun count_lines_fun); -void (*scheme_port_count_lines)(Scheme_Port *ip, const char *buffer, - intptr_t offset, intptr_t got); -Scheme_Object *(*scheme_progress_evt_via_get)(Scheme_Input_Port *port); -int (*scheme_peeked_read_via_get)(Scheme_Input_Port *port, - intptr_t size, - Scheme_Object *unless_evt, - Scheme_Object *target_ch); -Scheme_Object *(*scheme_write_evt_via_write)(Scheme_Output_Port *port, - const char *str, intptr_t offset, intptr_t size); -Scheme_Object *(*scheme_write_special_evt_via_write_special)(Scheme_Output_Port *port, - Scheme_Object *special); -Scheme_Object *(*scheme_open_input_file)(const char *name, const char *who); -Scheme_Object *(*scheme_open_output_file)(const char *name, const char *who); -Scheme_Object *(*scheme_open_input_output_file)(const char *name, const char *who, Scheme_Object **oport); -Scheme_Object *(*scheme_open_output_file_with_mode)(const char *name, const char *who, int text); -Scheme_Object *(*scheme_make_file_input_port)(FILE *fp); -Scheme_Object *(*scheme_make_named_file_input_port)(FILE *fp, Scheme_Object *name); -Scheme_Object *(*scheme_make_file_output_port)(FILE *fp); -Scheme_Object *(*scheme_make_fd_input_port)(int fd, Scheme_Object *name, int regfile, int win_textmode); -Scheme_Object *(*scheme_make_fd_output_port)(int fd, Scheme_Object *name, int regfile, int win_textmode, int read_too); -Scheme_Object *(*scheme_make_byte_string_input_port)(const char *str); -Scheme_Object *(*scheme_make_sized_byte_string_input_port)(const char *str, intptr_t len); -Scheme_Object *(*scheme_make_byte_string_output_port)(); -char *(*scheme_get_sized_byte_string_output)(Scheme_Object *port, intptr_t *len); -char *(*scheme_get_reset_sized_byte_string_output)(Scheme_Object *port, intptr_t *len, int reset, intptr_t startpos, intptr_t endpos); -void (*scheme_pipe)(Scheme_Object **read, Scheme_Object **write); -void (*scheme_pipe_with_limit)(Scheme_Object **write, Scheme_Object **read, int maxsize); -Scheme_Object *(*scheme_make_null_output_port)(int can_write_special); -Scheme_Object *(*scheme_make_redirect_output_port)(Scheme_Object *port); -intptr_t (*scheme_set_file_position)(Scheme_Object *port, intptr_t pos); -int (*scheme_file_exists)(char *filename); -int (*scheme_directory_exists)(char *dirname); -char *(*scheme_expand_filename)(char* filename, int ilen, const char *errorin, int *ex, int guards); -char *(*scheme_expand_user_filename)(char* filename, int ilen, const char *errorin, int *ex, int guards); -char *(*scheme_expand_string_filename)(Scheme_Object *f, const char *errorin, int *ex, int guards); -char *(*scheme_os_getcwd)(char *buf, size_t buflen, int *actlen, int noexn); -int (*scheme_os_setcwd)(char *buf, int noexn); -char *(*scheme_getdrive)(void); -Scheme_Object *(*scheme_split_path)(const char *path, int len, Scheme_Object **base, int *isdir, int kind); -Scheme_Object *(*scheme_build_path)(int argc, Scheme_Object **argv); -Scheme_Object *(*scheme_path_to_directory_path)(Scheme_Object *p); -Scheme_Object *(*scheme_path_to_complete_path)(Scheme_Object *path, Scheme_Object *relto_path); -Scheme_Object *(*scheme_simplify_path)(int argc, Scheme_Object *argv[]); -Scheme_Object *(*scheme_make_path)(const char *chars); -Scheme_Object *(*scheme_make_sized_path)(char *chars, intptr_t len, int copy); -Scheme_Object *(*scheme_make_sized_offset_path)(char *chars, intptr_t d, intptr_t len, int copy); -Scheme_Object *(*scheme_make_sized_offset_kind_path)(char *chars, intptr_t d, intptr_t len, int copy, int kind); -Scheme_Object *(*scheme_make_path_without_copying)(char *chars); -void *(*scheme_alloc_fdset_array)(int count, int permanent); -void *(*scheme_init_fdset_array)(void *fdarray, int count); -void *(*scheme_get_fdset)(void *fdarray, int pos); -void (*scheme_fdzero)(void *fd); -void (*scheme_fdset)(void *fd, int pos); -void (*scheme_fdclr)(void *fd, int pos); -int (*scheme_fdisset)(void *fd, int pos); -void (*scheme_add_fd_handle)(void *h, void *fds, int repost); -void (*scheme_add_fd_eventmask)(void *fds, int mask); -void (*scheme_collapse_win_fd)(void *fds); -void (*scheme_set_wakeup_time)(void *fds, double end_time); -void (*scheme_security_check_file)(const char *who, const char *filename, int guards); -void (*scheme_security_check_file_link)(const char *who, const char *filename, const char *content); -void (*scheme_security_check_network)(const char *who, const char *host, int port, int client); -struct mz_addrinfo *(*scheme_get_host_address)(const char *address, int id, int *err, - int family, int passive, int tcp); -void (*scheme_free_host_address)(struct mz_addrinfo *a); -const char *(*scheme_host_address_strerror)(int errnum); -void (*scheme_getnameinfo)(void *sa, int salen, - char *host, int hostlen, - char *serv, int servlen); -int (*scheme_get_port_file_descriptor)(Scheme_Object *p, intptr_t *_fd); -intptr_t (*scheme_get_port_fd)(Scheme_Object *p); -int (*scheme_get_port_socket)(Scheme_Object *p, intptr_t *_s); -void (*scheme_socket_to_ports)(intptr_t s, const char *name, int takeover, - Scheme_Object **_inp, Scheme_Object **_outp); -Scheme_Object *(*scheme_fd_to_semaphore)(intptr_t fd, int mode, int is_socket); -void (*scheme_set_type_printer)(Scheme_Type stype, Scheme_Type_Printer printer); -void (*scheme_print_bytes)(Scheme_Print_Params *pp, const char *str, int offset, int len); -void (*scheme_print_utf8)(Scheme_Print_Params *pp, const char *str, int offset, int len); -void (*scheme_print_string)(Scheme_Print_Params *pp, const mzchar *str, int offset, int len); -Scheme_Object *(*scheme_read_byte_string)(Scheme_Object *port); -/*========================================================================*/ -/* namespace/environment */ -/*========================================================================*/ -Scheme_Object *(*scheme_make_namespace)(int argc, Scheme_Object *argv[]); -void (*scheme_add_global)(const char *name, Scheme_Object *val, Scheme_Env *env); -void (*scheme_add_global_symbol)(Scheme_Object *name, Scheme_Object *val, - Scheme_Env *env); -Scheme_Object *(*scheme_make_envunbox)(Scheme_Object *value); -Scheme_Object *(*scheme_lookup_global)(Scheme_Object *symbol, Scheme_Env *env); -Scheme_Bucket *(*scheme_global_bucket)(Scheme_Object *symbol, Scheme_Env *env); -Scheme_Bucket *(*scheme_module_bucket)(Scheme_Object *mod, Scheme_Object *var, int pos, Scheme_Env *env); -Scheme_Object *(*scheme_builtin_value)(const char *name); /* convenience */ -void (*scheme_set_global_bucket)(char *proc, Scheme_Bucket *var, Scheme_Object *val, - int set_undef); -Scheme_Env *(*scheme_primitive_module)(Scheme_Object *name, Scheme_Env *for_env); -void (*scheme_finish_primitive_module)(Scheme_Env *env); -void (*scheme_set_primitive_module_phaseless)(Scheme_Env *env, int phaseless); -void (*scheme_protect_primitive_provide)(Scheme_Env *env, Scheme_Object *name); -Scheme_Object *(*scheme_make_modidx)(Scheme_Object *path, - Scheme_Object *base, - Scheme_Object *resolved); -Scheme_Object *(*scheme_dynamic_require)(int argc, Scheme_Object *argv[]); -Scheme_Object *(*scheme_dynamic_require_reader)(int argc, Scheme_Object *argv[]); -Scheme_Object *(*scheme_namespace_require)(Scheme_Object *); -int (*scheme_is_module_path)(Scheme_Object *); -int (*scheme_is_module_path_index)(Scheme_Object *); -int (*scheme_is_resolved_module_path)(Scheme_Object *); -Scheme_Object *(*scheme_datum_to_kernel_stx)(Scheme_Object *e); -int (*scheme_module_is_declared)(Scheme_Object *name, int try_load); -/*========================================================================*/ -/* symbols */ -/*========================================================================*/ -Scheme_Object *(*scheme_intern_symbol)(const char *name); -Scheme_Object *(*scheme_intern_exact_symbol)(const char *name, uintptr_t len); -Scheme_Object *(*scheme_intern_exact_char_symbol)(const mzchar *name, uintptr_t len); -Scheme_Object *(*scheme_make_symbol)(const char *name); /* Make uninterned */ -Scheme_Object *(*scheme_make_exact_symbol)(const char *name, uintptr_t len); /* Exact case */ -Scheme_Object *(*scheme_make_exact_char_symbol)(const mzchar *name, uintptr_t len); /* Exact case */ -const char *(*scheme_symbol_name)(Scheme_Object *sym); -const char *(*scheme_symbol_name_and_size)(Scheme_Object *sym, uintptr_t *l, int flags); -char *(*scheme_symbol_val)(Scheme_Object *sym); -Scheme_Object *(*scheme_intern_exact_keyword)(const char *name, uintptr_t len); -Scheme_Object *(*scheme_intern_exact_char_keyword)(const mzchar *name, uintptr_t len); -/*========================================================================*/ -/* structs */ -/*========================================================================*/ -Scheme_Object **(*scheme_make_struct_values)(Scheme_Object *struct_type, - Scheme_Object **names, - int count, int flags); -Scheme_Object **(*scheme_make_struct_names)(Scheme_Object *base, - Scheme_Object *field_names, - int flags, int *count_out); -Scheme_Object *(*scheme_make_struct_type)(Scheme_Object *base, - Scheme_Object *parent, - Scheme_Object *inspector, - int num_fields, int num_uninit_fields, - Scheme_Object *uninit_val, - Scheme_Object *properties, - Scheme_Object *guard); -Scheme_Object *(*scheme_make_struct_type2)(Scheme_Object *base, - Scheme_Object *parent, - Scheme_Object *inspector, - int num_fields, int num_uninit_fields, - Scheme_Object *uninit_val, - Scheme_Object *proc_attr, - Scheme_Object *properties, - char *immutable_array, - Scheme_Object *guard); -Scheme_Object *(*scheme_make_struct_instance)(Scheme_Object *stype, - int argc, - Scheme_Object **argv); -int (*scheme_is_struct_instance)(Scheme_Object *type, Scheme_Object *v); -Scheme_Object *(*scheme_struct_ref)(Scheme_Object *s, int pos); -void (*scheme_struct_set)(Scheme_Object *s, int pos, Scheme_Object *v); -Scheme_Object *(*scheme_make_struct_type_property)(Scheme_Object *name); -Scheme_Object *(*scheme_make_struct_type_property_w_guard)(Scheme_Object *name, Scheme_Object *guard); -Scheme_Object *(*scheme_struct_type_property_ref)(Scheme_Object *prop, Scheme_Object *s); -Scheme_Object *(*scheme_chaperone_struct_type_property_ref)(Scheme_Object *prop, Scheme_Object *s); -Scheme_Object *(*scheme_make_location)(Scheme_Object *src, - Scheme_Object *line, - Scheme_Object *col, - Scheme_Object *pos, - Scheme_Object *span); -int (*scheme_is_location)(Scheme_Object *o); -Scheme_Object *(*scheme_make_inspector)(Scheme_Object *superior); -int (*scheme_is_subinspector)(Scheme_Object *i, Scheme_Object *sup); -/*========================================================================*/ -/* utilities */ -/*========================================================================*/ -int (*scheme_eq)(Scheme_Object *obj1, Scheme_Object *obj2); -int (*scheme_eqv)(Scheme_Object *obj1, Scheme_Object *obj2); -int (*scheme_equal)(Scheme_Object *obj1, Scheme_Object *obj2); -int (*scheme_chaperone_of)(Scheme_Object *obj1, Scheme_Object *obj2); -int (*scheme_impersonator_of)(Scheme_Object *obj1, Scheme_Object *obj2); -#ifdef MZ_PRECISE_GC -intptr_t (*scheme_hash_key)(Scheme_Object *o); -#endif -intptr_t (*scheme_equal_hash_key)(Scheme_Object *o); -intptr_t (*scheme_equal_hash_key2)(Scheme_Object *o); -intptr_t (*scheme_recur_equal_hash_key)(Scheme_Object *o, void *cycle_data); -intptr_t (*scheme_recur_equal_hash_key2)(Scheme_Object *o, void *cycle_data); -intptr_t (*scheme_eqv_hash_key)(Scheme_Object *o); -intptr_t (*scheme_eqv_hash_key2)(Scheme_Object *o); -void (*scheme_set_type_equality)(Scheme_Type type, - Scheme_Equal_Proc f, - Scheme_Primary_Hash_Proc hash1, - Scheme_Secondary_Hash_Proc hash2); -int (*scheme_recur_equal)(Scheme_Object *obj1, Scheme_Object *obj2, void *cycle_info); -Scheme_Object *(*scheme_build_list)(int argc, Scheme_Object **argv); -Scheme_Object *(*scheme_build_list_offset)(int argc, Scheme_Object **argv, int delta); -int (*scheme_is_list)(Scheme_Object *obj1); -int (*scheme_list_length)(Scheme_Object *list); -int (*scheme_proper_list_length)(Scheme_Object *list); -Scheme_Object *(*scheme_alloc_list)(int size); -Scheme_Object *(*scheme_map_1)(Scheme_Object *(*f)(Scheme_Object*), Scheme_Object *l); -Scheme_Object *(*scheme_car)(Scheme_Object *pair); -Scheme_Object *(*scheme_cdr)(Scheme_Object *pair); -Scheme_Object *(*scheme_cadr)(Scheme_Object *pair); -Scheme_Object *(*scheme_caddr)(Scheme_Object *pair); -Scheme_Object *(*scheme_vector_to_list)(Scheme_Object *vec); -Scheme_Object *(*scheme_list_to_vector)(Scheme_Object *list); -Scheme_Object *(*scheme_append)(Scheme_Object *lstx, Scheme_Object *lsty); -Scheme_Object *(*scheme_reverse)(Scheme_Object *l); -Scheme_Object *(*scheme_box)(Scheme_Object *v); -Scheme_Object *(*scheme_unbox)(Scheme_Object *obj); -void (*scheme_set_box)(Scheme_Object *b, Scheme_Object *v); -Scheme_Object *(*scheme_make_weak_box)(Scheme_Object *v); -Scheme_Object *(*scheme_make_late_weak_box)(Scheme_Object *v); -Scheme_Object *(*scheme_make_ephemeron)(Scheme_Object *key, Scheme_Object *val); -Scheme_Object *(*scheme_ephemeron_value)(Scheme_Object *o); -Scheme_Object *(*scheme_ephemeron_key)(Scheme_Object *o); -Scheme_Object *(*scheme_make_late_will_executor)(); -Scheme_Object *(*scheme_load)(const char *file); -Scheme_Object *(*scheme_load_extension)(const char *filename, Scheme_Env *env); -void (*scheme_register_extension_global)(void *ptr, intptr_t size); -intptr_t (*scheme_get_seconds)(void); -uintptr_t (*scheme_get_milliseconds)(void); -double (*scheme_get_inexact_milliseconds)(void); -intptr_t (*scheme_get_process_milliseconds)(void); -intptr_t (*scheme_get_process_children_milliseconds)(void); -intptr_t (*scheme_get_thread_milliseconds)(Scheme_Object *thrd); -char *(*scheme_banner)(void); -char *(*scheme_version)(void); -int (*scheme_check_proc_arity)(const char *where, int a, - int which, int argc, Scheme_Object **argv); -int (*scheme_check_proc_arity2)(const char *where, int a, - int which, int argc, Scheme_Object **argv, - int false_ok); -char *(*scheme_make_provided_string)(Scheme_Object *o, int count, intptr_t *len); -char *(*scheme_make_args_string)(const char *s, int which, int argc, Scheme_Object **argv, intptr_t *len); -char *(*scheme_make_arg_lines_string)(const char *s, int which, int argc, Scheme_Object **argv, intptr_t *len); -const char *(*scheme_system_library_subpath)(); -void (*scheme_signal_received)(void); -void (*scheme_signal_received_at)(void *); -void *(*scheme_get_signal_handle)(); -void (*scheme_wait_until_signal_received)(void); -intptr_t (*scheme_char_strlen)(const mzchar *s); -Scheme_Object *(*scheme_stx_extract_marks)(Scheme_Object *stx); -int (*scheme_get_place_id)(void); -Scheme_Hash_Table *(*scheme_get_place_table)(void); -void *(*scheme_register_process_global)(const char *key, void *val); -Scheme_Object *(*scheme_malloc_key)(void); -void (*scheme_free_key)(Scheme_Object *k); -void *(*scheme_jit_find_code_end)(void *p); -void (*scheme_jit_now)(Scheme_Object *f); -void (*scheme_set_signal_handler)(int sig_id, Scheme_Signal_Handler_Proc proc); -#ifndef SCHEME_EX_INLINE -} Scheme_Extension_Table; -#endif diff --git a/racket/src/include/schemexm.h b/racket/src/include/schemexm.h deleted file mode 100644 index 5bc0cfb244..0000000000 --- a/racket/src/include/schemexm.h +++ /dev/null @@ -1,730 +0,0 @@ -#define scheme_init_jmpup_buf (scheme_extension_table->scheme_init_jmpup_buf) -#define scheme_setjmpup_relative (scheme_extension_table->scheme_setjmpup_relative) -#define scheme_longjmpup (scheme_extension_table->scheme_longjmpup) -#define scheme_reset_jmpup_buf (scheme_extension_table->scheme_reset_jmpup_buf) -#ifdef USE_MZ_SETJMP -#define scheme_get_mz_setjmp (scheme_extension_table->scheme_get_mz_setjmp) -#define scheme_mz_setjmp (scheme_extension_table->scheme_mz_setjmp) -#define scheme_mz_longjmp (scheme_extension_table->scheme_mz_longjmp) -#endif -#define scheme_clear_escape (scheme_extension_table->scheme_clear_escape) -#define scheme_new_jmpupbuf_holder (scheme_extension_table->scheme_new_jmpupbuf_holder) -#define scheme_current_config (scheme_extension_table->scheme_current_config) -#define scheme_minimal_config (scheme_extension_table->scheme_minimal_config) -#define scheme_extend_config (scheme_extension_table->scheme_extend_config) -#define scheme_install_config (scheme_extension_table->scheme_install_config) -#define scheme_get_param (scheme_extension_table->scheme_get_param) -#define scheme_set_param (scheme_extension_table->scheme_set_param) -#define scheme_get_thread_param (scheme_extension_table->scheme_get_thread_param) -#define scheme_set_thread_param (scheme_extension_table->scheme_set_thread_param) -#define scheme_get_env (scheme_extension_table->scheme_get_env) -#define scheme_empty_cell_table (scheme_extension_table->scheme_empty_cell_table) -#define scheme_inherit_cells (scheme_extension_table->scheme_inherit_cells) -#define scheme_current_break_cell (scheme_extension_table->scheme_current_break_cell) -#ifndef USE_THREAD_LOCAL -# ifndef LINK_EXTENSIONS_BY_TABLE -#define scheme_current_thread (scheme_extension_table->scheme_current_thread) -#define scheme_fuel_counter (scheme_extension_table->scheme_fuel_counter) -# else -#define scheme_current_thread_ptr (scheme_extension_table->scheme_current_thread_ptr) -#define scheme_fuel_counter_ptr (scheme_extension_table->scheme_fuel_counter_ptr) -# endif -#endif -#define scheme_get_current_thread (scheme_extension_table->scheme_get_current_thread) -#define scheme_is_atomic (scheme_extension_table->scheme_is_atomic) -#define scheme_start_atomic (scheme_extension_table->scheme_start_atomic) -#define scheme_end_atomic (scheme_extension_table->scheme_end_atomic) -#define scheme_end_atomic_no_swap (scheme_extension_table->scheme_end_atomic_no_swap) -#define scheme_start_in_scheduler (scheme_extension_table->scheme_start_in_scheduler) -#define scheme_end_in_scheduler (scheme_extension_table->scheme_end_in_scheduler) -#define scheme_start_atomic_no_break (scheme_extension_table->scheme_start_atomic_no_break) -#define scheme_end_atomic_can_break (scheme_extension_table->scheme_end_atomic_can_break) -#define scheme_out_of_fuel (scheme_extension_table->scheme_out_of_fuel) -#define scheme_thread (scheme_extension_table->scheme_thread) -#define scheme_thread_w_details (scheme_extension_table->scheme_thread_w_details) -#define scheme_kill_thread (scheme_extension_table->scheme_kill_thread) -#define scheme_break_thread (scheme_extension_table->scheme_break_thread) -#define scheme_break_kind_thread (scheme_extension_table->scheme_break_kind_thread) -#define scheme_break_main_thread (scheme_extension_table->scheme_break_main_thread) -#define scheme_break_main_thread_at (scheme_extension_table->scheme_break_main_thread_at) -#define scheme_break_kind_main_thread_at (scheme_extension_table->scheme_break_kind_main_thread_at) -#define scheme_get_main_thread_break_handle (scheme_extension_table->scheme_get_main_thread_break_handle) -#define scheme_set_break_main_target (scheme_extension_table->scheme_set_break_main_target) -#define scheme_thread_block (scheme_extension_table->scheme_thread_block) -#define scheme_thread_block_enable_break (scheme_extension_table->scheme_thread_block_enable_break) -#define scheme_swap_thread (scheme_extension_table->scheme_swap_thread) -#define scheme_making_progress (scheme_extension_table->scheme_making_progress) -#define scheme_weak_suspend_thread (scheme_extension_table->scheme_weak_suspend_thread) -#define scheme_weak_resume_thread (scheme_extension_table->scheme_weak_resume_thread) -#define scheme_block_until (scheme_extension_table->scheme_block_until) -#define scheme_block_until_enable_break (scheme_extension_table->scheme_block_until_enable_break) -#define scheme_block_until_unless (scheme_extension_table->scheme_block_until_unless) -#define scheme_wait_input_allowed (scheme_extension_table->scheme_wait_input_allowed) -#define scheme_unless_ready (scheme_extension_table->scheme_unless_ready) -#define scheme_in_main_thread (scheme_extension_table->scheme_in_main_thread) -#define scheme_cancel_sleep (scheme_extension_table->scheme_cancel_sleep) -#define scheme_start_sleeper_thread (scheme_extension_table->scheme_start_sleeper_thread) -#define scheme_end_sleeper_thread (scheme_extension_table->scheme_end_sleeper_thread) -#define scheme_set_place_sleep (scheme_extension_table->scheme_set_place_sleep) -#define scheme_notify_sleep_progress (scheme_extension_table->scheme_notify_sleep_progress) -#define scheme_make_thread_cell (scheme_extension_table->scheme_make_thread_cell) -#define scheme_thread_cell_get (scheme_extension_table->scheme_thread_cell_get) -#define scheme_thread_cell_set (scheme_extension_table->scheme_thread_cell_set) -#define scheme_tls_allocate (scheme_extension_table->scheme_tls_allocate) -#define scheme_tls_set (scheme_extension_table->scheme_tls_set) -#define scheme_tls_get (scheme_extension_table->scheme_tls_get) -#define scheme_make_custodian (scheme_extension_table->scheme_make_custodian) -#define scheme_add_managed (scheme_extension_table->scheme_add_managed) -#define scheme_add_managed_close_on_exit (scheme_extension_table->scheme_add_managed_close_on_exit) -#define scheme_custodian_check_available (scheme_extension_table->scheme_custodian_check_available) -#define scheme_custodian_is_available (scheme_extension_table->scheme_custodian_is_available) -#define scheme_remove_managed (scheme_extension_table->scheme_remove_managed) -#define scheme_close_managed (scheme_extension_table->scheme_close_managed) -#define scheme_schedule_custodian_close (scheme_extension_table->scheme_schedule_custodian_close) -#define scheme_add_custodian_extractor (scheme_extension_table->scheme_add_custodian_extractor) -#define scheme_flush_managed (scheme_extension_table->scheme_flush_managed) -#define scheme_add_flush (scheme_extension_table->scheme_add_flush) -#define scheme_remove_flush (scheme_extension_table->scheme_remove_flush) -#define scheme_add_atexit_closer (scheme_extension_table->scheme_add_atexit_closer) -#define scheme_atexit (scheme_extension_table->scheme_atexit) -#define scheme_add_evt (scheme_extension_table->scheme_add_evt) -#define scheme_add_evt_through_sema (scheme_extension_table->scheme_add_evt_through_sema) -#define scheme_is_evt (scheme_extension_table->scheme_is_evt) -#define scheme_sync (scheme_extension_table->scheme_sync) -#define scheme_sync_enable_break (scheme_extension_table->scheme_sync_enable_break) -#define scheme_sync_timeout (scheme_extension_table->scheme_sync_timeout) -#define scheme_make_evt_set (scheme_extension_table->scheme_make_evt_set) -#define scheme_add_swap_callback (scheme_extension_table->scheme_add_swap_callback) -#define scheme_add_swap_out_callback (scheme_extension_table->scheme_add_swap_out_callback) -#define scheme_call_enable_break (scheme_extension_table->scheme_call_enable_break) -#define scheme_close_should_force_port_closed (scheme_extension_table->scheme_close_should_force_port_closed) -#define scheme_push_kill_action (scheme_extension_table->scheme_push_kill_action) -#define scheme_pop_kill_action (scheme_extension_table->scheme_pop_kill_action) -#define scheme_set_can_break (scheme_extension_table->scheme_set_can_break) -#define scheme_push_break_enable (scheme_extension_table->scheme_push_break_enable) -#define scheme_pop_break_enable (scheme_extension_table->scheme_pop_break_enable) -#define scheme_abort_continuation_no_dws (scheme_extension_table->scheme_abort_continuation_no_dws) -#define scheme_call_with_composable_no_dws (scheme_extension_table->scheme_call_with_composable_no_dws) -#define scheme_set_on_atomic_timeout (scheme_extension_table->scheme_set_on_atomic_timeout) -#define scheme_signal_error (scheme_extension_table->scheme_signal_error) -#define scheme_raise_exn (scheme_extension_table->scheme_raise_exn) -#define scheme_warning (scheme_extension_table->scheme_warning) -#define scheme_raise (scheme_extension_table->scheme_raise) -#define scheme_log_level_p (scheme_extension_table->scheme_log_level_p) -#define scheme_log_level_topic_p (scheme_extension_table->scheme_log_level_topic_p) -#define scheme_log (scheme_extension_table->scheme_log) -#define scheme_log_w_data (scheme_extension_table->scheme_log_w_data) -#define scheme_log_message (scheme_extension_table->scheme_log_message) -#define scheme_log_name_message (scheme_extension_table->scheme_log_name_message) -#define scheme_log_name_pfx_message (scheme_extension_table->scheme_log_name_pfx_message) -#define scheme_log_abort (scheme_extension_table->scheme_log_abort) -#define scheme_log_warning (scheme_extension_table->scheme_log_warning) -#define scheme_glib_log_message (scheme_extension_table->scheme_glib_log_message) -#define scheme_glib_log_message_test (scheme_extension_table->scheme_glib_log_message_test) -#define scheme_out_of_memory_abort (scheme_extension_table->scheme_out_of_memory_abort) -#define scheme_wrong_count (scheme_extension_table->scheme_wrong_count) -#define scheme_wrong_count_m (scheme_extension_table->scheme_wrong_count_m) -#define scheme_case_lambda_wrong_count (scheme_extension_table->scheme_case_lambda_wrong_count) -#define scheme_wrong_type (scheme_extension_table->scheme_wrong_type) -#define scheme_wrong_contract (scheme_extension_table->scheme_wrong_contract) -#define scheme_wrong_field_type (scheme_extension_table->scheme_wrong_field_type) -#define scheme_wrong_field_contract (scheme_extension_table->scheme_wrong_field_contract) -#define scheme_arg_mismatch (scheme_extension_table->scheme_arg_mismatch) -#define scheme_contract_error (scheme_extension_table->scheme_contract_error) -#define scheme_wrong_return_arity (scheme_extension_table->scheme_wrong_return_arity) -#define scheme_unbound_global (scheme_extension_table->scheme_unbound_global) -#define scheme_dynamic_wind (scheme_extension_table->scheme_dynamic_wind) -#define scheme_make_type (scheme_extension_table->scheme_make_type) -#define scheme_get_type_name (scheme_extension_table->scheme_get_type_name) -#define scheme_get_type_name_or_null (scheme_extension_table->scheme_get_type_name_or_null) -#define scheme_eof (scheme_extension_table->scheme_eof) -#define scheme_make_eof (scheme_extension_table->scheme_make_eof) -#define scheme_null (scheme_extension_table->scheme_null) -#define scheme_make_null (scheme_extension_table->scheme_make_null) -#define scheme_true (scheme_extension_table->scheme_true) -#define scheme_make_true (scheme_extension_table->scheme_make_true) -#define scheme_false (scheme_extension_table->scheme_false) -#define scheme_make_false (scheme_extension_table->scheme_make_false) -#define scheme_void (scheme_extension_table->scheme_void) -#define scheme_make_void (scheme_extension_table->scheme_make_void) -#define scheme_undefined (scheme_extension_table->scheme_undefined) -#define scheme_tail_call_waiting (scheme_extension_table->scheme_tail_call_waiting) -#define scheme_multiple_values (scheme_extension_table->scheme_multiple_values) -#define scheme_uchar_table (scheme_extension_table->scheme_uchar_table) -#define scheme_uchar_cases_table (scheme_extension_table->scheme_uchar_cases_table) -#define scheme_uchar_cats_table (scheme_extension_table->scheme_uchar_cats_table) -#define scheme_uchar_ups (scheme_extension_table->scheme_uchar_ups) -#define scheme_uchar_downs (scheme_extension_table->scheme_uchar_downs) -#define scheme_uchar_titles (scheme_extension_table->scheme_uchar_titles) -#define scheme_uchar_folds (scheme_extension_table->scheme_uchar_folds) -#define scheme_uchar_combining_classes (scheme_extension_table->scheme_uchar_combining_classes) -#define scheme_on_demand_jit_code (scheme_extension_table->scheme_on_demand_jit_code) -#define scheme_eval (scheme_extension_table->scheme_eval) -#define scheme_eval_multi (scheme_extension_table->scheme_eval_multi) -#define scheme_eval_with_prompt (scheme_extension_table->scheme_eval_with_prompt) -#define scheme_eval_multi_with_prompt (scheme_extension_table->scheme_eval_multi_with_prompt) -#define scheme_eval_compiled (scheme_extension_table->scheme_eval_compiled) -#define scheme_eval_compiled_multi (scheme_extension_table->scheme_eval_compiled_multi) -#define _scheme_eval_compiled (scheme_extension_table->_scheme_eval_compiled) -#define _scheme_eval_compiled_multi (scheme_extension_table->_scheme_eval_compiled_multi) -#define scheme_apply (scheme_extension_table->scheme_apply) -#define scheme_apply_multi (scheme_extension_table->scheme_apply_multi) -#define scheme_apply_no_eb (scheme_extension_table->scheme_apply_no_eb) -#define scheme_apply_multi_no_eb (scheme_extension_table->scheme_apply_multi_no_eb) -#define scheme_apply_to_list (scheme_extension_table->scheme_apply_to_list) -#define scheme_apply_with_prompt (scheme_extension_table->scheme_apply_with_prompt) -#define scheme_apply_multi_with_prompt (scheme_extension_table->scheme_apply_multi_with_prompt) -#define _scheme_apply_with_prompt (scheme_extension_table->_scheme_apply_with_prompt) -#define _scheme_apply_multi_with_prompt (scheme_extension_table->_scheme_apply_multi_with_prompt) -#define scheme_eval_string (scheme_extension_table->scheme_eval_string) -#define scheme_eval_string_multi (scheme_extension_table->scheme_eval_string_multi) -#define scheme_eval_string_all (scheme_extension_table->scheme_eval_string_all) -#define scheme_eval_string_with_prompt (scheme_extension_table->scheme_eval_string_with_prompt) -#define scheme_eval_string_multi_with_prompt (scheme_extension_table->scheme_eval_string_multi_with_prompt) -#define scheme_eval_string_all_with_prompt (scheme_extension_table->scheme_eval_string_all_with_prompt) -#define scheme_eval_all_with_prompt (scheme_extension_table->scheme_eval_all_with_prompt) -#define scheme_eval_module_string (scheme_extension_table->scheme_eval_module_string) -#define _scheme_apply_known_prim_closure (scheme_extension_table->_scheme_apply_known_prim_closure) -#define _scheme_apply_known_prim_closure_multi (scheme_extension_table->_scheme_apply_known_prim_closure_multi) -#define _scheme_apply_prim_closure (scheme_extension_table->_scheme_apply_prim_closure) -#define _scheme_apply_prim_closure_multi (scheme_extension_table->_scheme_apply_prim_closure_multi) -#define scheme_current_argument_stack (scheme_extension_table->scheme_current_argument_stack) -#define scheme_call_with_prompt (scheme_extension_table->scheme_call_with_prompt) -#define scheme_call_with_prompt_multi (scheme_extension_table->scheme_call_with_prompt_multi) -#define _scheme_call_with_prompt (scheme_extension_table->_scheme_call_with_prompt) -#define _scheme_call_with_prompt_multi (scheme_extension_table->_scheme_call_with_prompt_multi) -#define scheme_values (scheme_extension_table->scheme_values) -#define scheme_check_one_value (scheme_extension_table->scheme_check_one_value) -#define scheme_tail_apply (scheme_extension_table->scheme_tail_apply) -#define scheme_tail_apply_no_copy (scheme_extension_table->scheme_tail_apply_no_copy) -#define scheme_tail_apply_to_list (scheme_extension_table->scheme_tail_apply_to_list) -#define scheme_tail_eval_expr (scheme_extension_table->scheme_tail_eval_expr) -#define scheme_set_tail_buffer_size (scheme_extension_table->scheme_set_tail_buffer_size) -#define scheme_force_value (scheme_extension_table->scheme_force_value) -#define scheme_force_one_value (scheme_extension_table->scheme_force_one_value) -#define scheme_ignore_result (scheme_extension_table->scheme_ignore_result) -#define scheme_set_cont_mark (scheme_extension_table->scheme_set_cont_mark) -#define scheme_push_continuation_frame (scheme_extension_table->scheme_push_continuation_frame) -#define scheme_pop_continuation_frame (scheme_extension_table->scheme_pop_continuation_frame) -#define scheme_temp_dec_mark_depth (scheme_extension_table->scheme_temp_dec_mark_depth) -#define scheme_temp_inc_mark_depth (scheme_extension_table->scheme_temp_inc_mark_depth) -#define scheme_current_continuation_marks (scheme_extension_table->scheme_current_continuation_marks) -#define scheme_extract_one_cc_mark (scheme_extension_table->scheme_extract_one_cc_mark) -#define scheme_extract_one_cc_mark_to_tag (scheme_extension_table->scheme_extract_one_cc_mark_to_tag) -#define scheme_do_eval (scheme_extension_table->scheme_do_eval) -#define scheme_detach_multple_array (scheme_extension_table->scheme_detach_multple_array) -#ifndef SCHEME_NO_GC -# ifndef SCHEME_NO_GC_PROTO -#define GC_malloc (scheme_extension_table->GC_malloc) -#define GC_malloc_atomic (scheme_extension_table->GC_malloc_atomic) -# ifdef MZ_PRECISE_GC -#define GC_malloc_one_tagged (scheme_extension_table->GC_malloc_one_tagged) -#define GC_malloc_atomic_uncollectable (scheme_extension_table->GC_malloc_atomic_uncollectable) -#define scheme_malloc_uncollectable (scheme_extension_table->scheme_malloc_uncollectable) -#define GC_malloc_allow_interior (scheme_extension_table->GC_malloc_allow_interior) -#define GC_malloc_atomic_allow_interior (scheme_extension_table->GC_malloc_atomic_allow_interior) -#define GC_malloc_tagged_allow_interior (scheme_extension_table->GC_malloc_tagged_allow_interior) -# else -#define GC_malloc_stubborn (scheme_extension_table->GC_malloc_stubborn) -#define GC_malloc_uncollectable (scheme_extension_table->GC_malloc_uncollectable) -# endif -# endif -#endif -#define scheme_malloc_code (scheme_extension_table->scheme_malloc_code) -#define scheme_malloc_permanent_code (scheme_extension_table->scheme_malloc_permanent_code) -#define scheme_free_code (scheme_extension_table->scheme_free_code) -#ifndef MZ_PRECISE_GC -#define scheme_malloc_gcable_code (scheme_extension_table->scheme_malloc_gcable_code) -#endif -#define scheme_malloc_eternal (scheme_extension_table->scheme_malloc_eternal) -#define scheme_end_stubborn_change (scheme_extension_table->scheme_end_stubborn_change) -#define scheme_calloc (scheme_extension_table->scheme_calloc) -#define scheme_strdup (scheme_extension_table->scheme_strdup) -#define scheme_strdup_eternal (scheme_extension_table->scheme_strdup_eternal) -#define scheme_malloc_fail_ok (scheme_extension_table->scheme_malloc_fail_ok) -#ifndef MZ_PRECISE_GC -#define scheme_late_weak_reference (scheme_extension_table->scheme_late_weak_reference) -#define scheme_late_weak_reference_indirect (scheme_extension_table->scheme_late_weak_reference_indirect) -#define scheme_weak_reference (scheme_extension_table->scheme_weak_reference) -#define scheme_weak_reference_indirect (scheme_extension_table->scheme_weak_reference_indirect) -#define scheme_unweak_reference (scheme_extension_table->scheme_unweak_reference) -#endif -#define scheme_add_finalizer (scheme_extension_table->scheme_add_finalizer) -#define scheme_add_finalizer_once (scheme_extension_table->scheme_add_finalizer_once) -#define scheme_subtract_finalizer (scheme_extension_table->scheme_subtract_finalizer) -#define scheme_add_scheme_finalizer (scheme_extension_table->scheme_add_scheme_finalizer) -#define scheme_add_scheme_finalizer_once (scheme_extension_table->scheme_add_scheme_finalizer_once) -#define scheme_register_finalizer (scheme_extension_table->scheme_register_finalizer) -#define scheme_remove_all_finalization (scheme_extension_table->scheme_remove_all_finalization) -#define scheme_dont_gc_ptr (scheme_extension_table->scheme_dont_gc_ptr) -#define scheme_gc_ptr_ok (scheme_extension_table->scheme_gc_ptr_ok) -#define scheme_collect_garbage (scheme_extension_table->scheme_collect_garbage) -#define scheme_collect_garbage_minor (scheme_extension_table->scheme_collect_garbage_minor) -#define scheme_enable_garbage_collection (scheme_extension_table->scheme_enable_garbage_collection) -#define scheme_incremental_garbage_collection (scheme_extension_table->scheme_incremental_garbage_collection) -#ifdef MZ_PRECISE_GC -# ifndef USE_THREAD_LOCAL -#define GC_variable_stack (scheme_extension_table->GC_variable_stack) -# endif -#define GC_register_traversers (scheme_extension_table->GC_register_traversers) -#define GC_resolve (scheme_extension_table->GC_resolve) -#define GC_mark (scheme_extension_table->GC_mark) -#define GC_fixup (scheme_extension_table->GC_fixup) -#define GC_fixup_self (scheme_extension_table->GC_fixup_self) -#endif -#define scheme_malloc_immobile_box (scheme_extension_table->scheme_malloc_immobile_box) -#define scheme_free_immobile_box (scheme_extension_table->scheme_free_immobile_box) -#define scheme_add_gc_callback (scheme_extension_table->scheme_add_gc_callback) -#define scheme_remove_gc_callback (scheme_extension_table->scheme_remove_gc_callback) -#define scheme_register_type_gc_shape (scheme_extension_table->scheme_register_type_gc_shape) -#define scheme_make_bucket_table (scheme_extension_table->scheme_make_bucket_table) -#define scheme_add_to_table (scheme_extension_table->scheme_add_to_table) -#define scheme_change_in_table (scheme_extension_table->scheme_change_in_table) -#define scheme_lookup_in_table (scheme_extension_table->scheme_lookup_in_table) -#define scheme_bucket_from_table (scheme_extension_table->scheme_bucket_from_table) -#define scheme_bucket_table_equal (scheme_extension_table->scheme_bucket_table_equal) -#define scheme_clone_bucket_table (scheme_extension_table->scheme_clone_bucket_table) -#define scheme_clear_bucket_table (scheme_extension_table->scheme_clear_bucket_table) -#define scheme_bucket_table_index (scheme_extension_table->scheme_bucket_table_index) -#define scheme_bucket_table_next (scheme_extension_table->scheme_bucket_table_next) -#define scheme_make_hash_table (scheme_extension_table->scheme_make_hash_table) -#define scheme_make_hash_table_equal (scheme_extension_table->scheme_make_hash_table_equal) -#define scheme_make_hash_table_eqv (scheme_extension_table->scheme_make_hash_table_eqv) -#define scheme_hash_set (scheme_extension_table->scheme_hash_set) -#define scheme_hash_get (scheme_extension_table->scheme_hash_get) -#define scheme_eq_hash_get (scheme_extension_table->scheme_eq_hash_get) -#define scheme_hash_set_atomic (scheme_extension_table->scheme_hash_set_atomic) -#define scheme_hash_get_atomic (scheme_extension_table->scheme_hash_get_atomic) -#define scheme_hash_table_equal (scheme_extension_table->scheme_hash_table_equal) -#define scheme_is_hash_table_equal (scheme_extension_table->scheme_is_hash_table_equal) -#define scheme_is_hash_table_eqv (scheme_extension_table->scheme_is_hash_table_eqv) -#define scheme_clone_hash_table (scheme_extension_table->scheme_clone_hash_table) -#define scheme_clear_hash_table (scheme_extension_table->scheme_clear_hash_table) -#define scheme_hash_table_index (scheme_extension_table->scheme_hash_table_index) -#define scheme_hash_table_next (scheme_extension_table->scheme_hash_table_next) -#define scheme_make_hash_tree (scheme_extension_table->scheme_make_hash_tree) -#define scheme_hash_tree_set (scheme_extension_table->scheme_hash_tree_set) -#define scheme_hash_tree_get (scheme_extension_table->scheme_hash_tree_get) -#define scheme_eq_hash_tree_get (scheme_extension_table->scheme_eq_hash_tree_get) -#define scheme_hash_tree_next (scheme_extension_table->scheme_hash_tree_next) -#define scheme_hash_tree_index (scheme_extension_table->scheme_hash_tree_index) -#define scheme_hash_tree_equal (scheme_extension_table->scheme_hash_tree_equal) -#define scheme_is_hash_tree_equal (scheme_extension_table->scheme_is_hash_tree_equal) -#define scheme_is_hash_tree_eqv (scheme_extension_table->scheme_is_hash_tree_eqv) -#define scheme_make_prim (scheme_extension_table->scheme_make_prim) -#define scheme_make_noneternal_prim (scheme_extension_table->scheme_make_noneternal_prim) -#define scheme_make_prim_w_arity (scheme_extension_table->scheme_make_prim_w_arity) -#define scheme_make_folding_prim (scheme_extension_table->scheme_make_folding_prim) -#define scheme_make_immed_prim (scheme_extension_table->scheme_make_immed_prim) -#define scheme_make_noncm_prim (scheme_extension_table->scheme_make_noncm_prim) -#define scheme_make_noneternal_prim_w_arity (scheme_extension_table->scheme_make_noneternal_prim_w_arity) -#define scheme_make_prim_w_everything (scheme_extension_table->scheme_make_prim_w_everything) -#define scheme_make_prim_closure_w_arity (scheme_extension_table->scheme_make_prim_closure_w_arity) -#define scheme_make_folding_prim_closure (scheme_extension_table->scheme_make_folding_prim_closure) -#define scheme_make_closed_prim (scheme_extension_table->scheme_make_closed_prim) -#define scheme_make_closed_prim_w_arity (scheme_extension_table->scheme_make_closed_prim_w_arity) -#define scheme_make_folding_closed_prim (scheme_extension_table->scheme_make_folding_closed_prim) -#define scheme_make_closed_prim_w_everything (scheme_extension_table->scheme_make_closed_prim_w_everything) -#define scheme_prim_is_method (scheme_extension_table->scheme_prim_is_method) -#define scheme_make_pair (scheme_extension_table->scheme_make_pair) -#define scheme_make_mutable_pair (scheme_extension_table->scheme_make_mutable_pair) -#define scheme_make_list_pair (scheme_extension_table->scheme_make_list_pair) -#define scheme_make_raw_pair (scheme_extension_table->scheme_make_raw_pair) -#define scheme_make_byte_string (scheme_extension_table->scheme_make_byte_string) -#define scheme_make_sized_byte_string (scheme_extension_table->scheme_make_sized_byte_string) -#define scheme_make_sized_offset_byte_string (scheme_extension_table->scheme_make_sized_offset_byte_string) -#define scheme_make_immutable_sized_byte_string (scheme_extension_table->scheme_make_immutable_sized_byte_string) -#define scheme_make_byte_string_without_copying (scheme_extension_table->scheme_make_byte_string_without_copying) -#define scheme_alloc_byte_string (scheme_extension_table->scheme_alloc_byte_string) -#define scheme_append_byte_string (scheme_extension_table->scheme_append_byte_string) -#define scheme_make_utf8_string (scheme_extension_table->scheme_make_utf8_string) -#define scheme_make_sized_utf8_string (scheme_extension_table->scheme_make_sized_utf8_string) -#define scheme_make_sized_offset_utf8_string (scheme_extension_table->scheme_make_sized_offset_utf8_string) -#define scheme_make_immutable_sized_utf8_string (scheme_extension_table->scheme_make_immutable_sized_utf8_string) -#define scheme_make_locale_string (scheme_extension_table->scheme_make_locale_string) -#define scheme_char_string_to_byte_string (scheme_extension_table->scheme_char_string_to_byte_string) -#define scheme_byte_string_to_char_string (scheme_extension_table->scheme_byte_string_to_char_string) -#define scheme_char_string_to_byte_string_locale (scheme_extension_table->scheme_char_string_to_byte_string_locale) -#define scheme_byte_string_to_char_string_locale (scheme_extension_table->scheme_byte_string_to_char_string_locale) -#define scheme_char_string_to_path (scheme_extension_table->scheme_char_string_to_path) -#define scheme_path_to_char_string (scheme_extension_table->scheme_path_to_char_string) -#define scheme_make_char_string (scheme_extension_table->scheme_make_char_string) -#define scheme_make_sized_char_string (scheme_extension_table->scheme_make_sized_char_string) -#define scheme_make_sized_offset_char_string (scheme_extension_table->scheme_make_sized_offset_char_string) -#define scheme_make_immutable_sized_char_string (scheme_extension_table->scheme_make_immutable_sized_char_string) -#define scheme_make_char_string_without_copying (scheme_extension_table->scheme_make_char_string_without_copying) -#define scheme_alloc_char_string (scheme_extension_table->scheme_alloc_char_string) -#define scheme_append_char_string (scheme_extension_table->scheme_append_char_string) -#define scheme_string_recase (scheme_extension_table->scheme_string_recase) -#define scheme_make_vector (scheme_extension_table->scheme_make_vector) -#define scheme_alloc_flvector (scheme_extension_table->scheme_alloc_flvector) -#ifdef MZ_LONG_DOUBLE -#define scheme_alloc_extflvector (scheme_extension_table->scheme_alloc_extflvector) -#endif -#define scheme_alloc_fxvector (scheme_extension_table->scheme_alloc_fxvector) -#define scheme_make_integer_value (scheme_extension_table->scheme_make_integer_value) -#define scheme_make_integer_value_from_unsigned (scheme_extension_table->scheme_make_integer_value_from_unsigned) -#define scheme_make_integer_value_from_long_long (scheme_extension_table->scheme_make_integer_value_from_long_long) -#define scheme_make_integer_value_from_unsigned_long_long (scheme_extension_table->scheme_make_integer_value_from_unsigned_long_long) -#define scheme_make_integer_value_from_long_halves (scheme_extension_table->scheme_make_integer_value_from_long_halves) -#define scheme_make_integer_value_from_unsigned_long_halves (scheme_extension_table->scheme_make_integer_value_from_unsigned_long_halves) -#define scheme_make_double (scheme_extension_table->scheme_make_double) -#ifdef MZ_LONG_DOUBLE -#define scheme_make_long_double (scheme_extension_table->scheme_make_long_double) -#endif -#ifdef MZ_USE_SINGLE_FLOATS -#define scheme_make_float (scheme_extension_table->scheme_make_float) -#endif -#define scheme_make_char (scheme_extension_table->scheme_make_char) -#define scheme_make_char_or_nul (scheme_extension_table->scheme_make_char_or_nul) -#define scheme_make_sema (scheme_extension_table->scheme_make_sema) -#define scheme_post_sema (scheme_extension_table->scheme_post_sema) -#define scheme_post_sema_all (scheme_extension_table->scheme_post_sema_all) -#define scheme_wait_sema (scheme_extension_table->scheme_wait_sema) -#define scheme_try_plain_sema (scheme_extension_table->scheme_try_plain_sema) -#define scheme_char_constants (scheme_extension_table->scheme_char_constants) -#define scheme_make_channel (scheme_extension_table->scheme_make_channel) -#define scheme_make_channel_put_evt (scheme_extension_table->scheme_make_channel_put_evt) -#define scheme_get_int_val (scheme_extension_table->scheme_get_int_val) -#define scheme_get_unsigned_int_val (scheme_extension_table->scheme_get_unsigned_int_val) -#define scheme_get_long_long_val (scheme_extension_table->scheme_get_long_long_val) -#define scheme_get_unsigned_long_long_val (scheme_extension_table->scheme_get_unsigned_long_long_val) -#define scheme_real_to_double (scheme_extension_table->scheme_real_to_double) -#ifdef MZ_LONG_DOUBLE -#define scheme_real_to_long_double (scheme_extension_table->scheme_real_to_long_double) -#endif -#define scheme_make_cptr (scheme_extension_table->scheme_make_cptr) -#define scheme_make_offset_cptr (scheme_extension_table->scheme_make_offset_cptr) -#define scheme_make_external_cptr (scheme_extension_table->scheme_make_external_cptr) -#define scheme_make_offset_external_cptr (scheme_extension_table->scheme_make_offset_external_cptr) -#define scheme_is_cpointer (scheme_extension_table->scheme_is_cpointer) -#define scheme_get_proc_name (scheme_extension_table->scheme_get_proc_name) -#define scheme_utf8_decode (scheme_extension_table->scheme_utf8_decode) -#define scheme_utf8_decode_offset_prefix (scheme_extension_table->scheme_utf8_decode_offset_prefix) -#define scheme_utf8_decode_as_prefix (scheme_extension_table->scheme_utf8_decode_as_prefix) -#define scheme_utf8_decode_all (scheme_extension_table->scheme_utf8_decode_all) -#define scheme_utf8_decode_prefix (scheme_extension_table->scheme_utf8_decode_prefix) -#define scheme_utf8_decode_to_buffer (scheme_extension_table->scheme_utf8_decode_to_buffer) -#define scheme_utf8_decode_to_buffer_len (scheme_extension_table->scheme_utf8_decode_to_buffer_len) -#define scheme_utf8_decode_count (scheme_extension_table->scheme_utf8_decode_count) -#define scheme_utf8_encode (scheme_extension_table->scheme_utf8_encode) -#define scheme_utf8_encode_all (scheme_extension_table->scheme_utf8_encode_all) -#define scheme_utf8_encode_to_buffer (scheme_extension_table->scheme_utf8_encode_to_buffer) -#define scheme_utf8_encode_to_buffer_len (scheme_extension_table->scheme_utf8_encode_to_buffer_len) -#define scheme_ucs4_to_utf16 (scheme_extension_table->scheme_ucs4_to_utf16) -#define scheme_utf16_to_ucs4 (scheme_extension_table->scheme_utf16_to_ucs4) -#define scheme_open_converter (scheme_extension_table->scheme_open_converter) -#define scheme_close_converter (scheme_extension_table->scheme_close_converter) -#define scheme_getenv (scheme_extension_table->scheme_getenv) -#define scheme_make_bignum (scheme_extension_table->scheme_make_bignum) -#define scheme_make_bignum_from_unsigned (scheme_extension_table->scheme_make_bignum_from_unsigned) -#define scheme_make_bignum_from_long_long (scheme_extension_table->scheme_make_bignum_from_long_long) -#define scheme_make_bignum_from_unsigned_long_long (scheme_extension_table->scheme_make_bignum_from_unsigned_long_long) -#define scheme_bignum_to_double (scheme_extension_table->scheme_bignum_to_double) -#define scheme_bignum_from_double (scheme_extension_table->scheme_bignum_from_double) -#ifdef MZ_LONG_DOUBLE -#define scheme_bignum_to_long_double (scheme_extension_table->scheme_bignum_to_long_double) -#define scheme_bignum_from_long_double (scheme_extension_table->scheme_bignum_from_long_double) -#endif -#ifdef MZ_USE_SINGLE_FLOATS -#define scheme_bignum_to_float (scheme_extension_table->scheme_bignum_to_float) -#define scheme_bignum_from_float (scheme_extension_table->scheme_bignum_from_float) -#else -# define scheme_bignum_to_float scheme_bignum_to_double -# define scheme_bignum_from_float scheme_bignum_from_double -#endif -#define scheme_bignum_to_string (scheme_extension_table->scheme_bignum_to_string) -#define scheme_bignum_to_allocated_string (scheme_extension_table->scheme_bignum_to_allocated_string) -#define scheme_read_bignum (scheme_extension_table->scheme_read_bignum) -#define scheme_read_bignum_bytes (scheme_extension_table->scheme_read_bignum_bytes) -#define scheme_bignum_normalize (scheme_extension_table->scheme_bignum_normalize) -#define scheme_make_rational (scheme_extension_table->scheme_make_rational) -#define scheme_rational_to_double (scheme_extension_table->scheme_rational_to_double) -#define scheme_rational_from_double (scheme_extension_table->scheme_rational_from_double) -#ifdef MZ_LONG_DOUBLE -#define scheme_rational_to_long_double (scheme_extension_table->scheme_rational_to_long_double) -#define scheme_rational_from_long_double (scheme_extension_table->scheme_rational_from_long_double) -#endif -#ifdef MZ_USE_SINGLE_FLOATS -#define scheme_rational_to_float (scheme_extension_table->scheme_rational_to_float) -#define scheme_rational_from_float (scheme_extension_table->scheme_rational_from_float) -#else -# define scheme_rational_to_float scheme_rational_to_double -# define scheme_rational_from_float scheme_rational_from_double -#endif -#define scheme_rational_normalize (scheme_extension_table->scheme_rational_normalize) -#define scheme_rational_numerator (scheme_extension_table->scheme_rational_numerator) -#define scheme_rational_denominator (scheme_extension_table->scheme_rational_denominator) -#define scheme_make_complex (scheme_extension_table->scheme_make_complex) -#define scheme_complex_normalize (scheme_extension_table->scheme_complex_normalize) -#define scheme_complex_real_part (scheme_extension_table->scheme_complex_real_part) -#define scheme_complex_imaginary_part (scheme_extension_table->scheme_complex_imaginary_part) -#define scheme_is_exact (scheme_extension_table->scheme_is_exact) -#define scheme_is_inexact (scheme_extension_table->scheme_is_inexact) -#define scheme_expand (scheme_extension_table->scheme_expand) -#define scheme_compile (scheme_extension_table->scheme_compile) -#define scheme_read (scheme_extension_table->scheme_read) -#define scheme_read_syntax (scheme_extension_table->scheme_read_syntax) -#define scheme_write (scheme_extension_table->scheme_write) -#define scheme_print (scheme_extension_table->scheme_print) -#define scheme_display (scheme_extension_table->scheme_display) -#define scheme_write_w_max (scheme_extension_table->scheme_write_w_max) -#define scheme_display_w_max (scheme_extension_table->scheme_display_w_max) -#define scheme_print_w_max (scheme_extension_table->scheme_print_w_max) -#define scheme_write_byte_string (scheme_extension_table->scheme_write_byte_string) -#define scheme_write_char_string (scheme_extension_table->scheme_write_char_string) -#define scheme_put_byte_string (scheme_extension_table->scheme_put_byte_string) -#define scheme_put_char_string (scheme_extension_table->scheme_put_char_string) -#define scheme_write_to_string (scheme_extension_table->scheme_write_to_string) -#define scheme_display_to_string (scheme_extension_table->scheme_display_to_string) -#define scheme_print_to_string (scheme_extension_table->scheme_print_to_string) -#define scheme_write_to_string_w_max (scheme_extension_table->scheme_write_to_string_w_max) -#define scheme_display_to_string_w_max (scheme_extension_table->scheme_display_to_string_w_max) -#define scheme_print_to_string_w_max (scheme_extension_table->scheme_print_to_string_w_max) -#define scheme_debug_print (scheme_extension_table->scheme_debug_print) -#define scheme_flush_output (scheme_extension_table->scheme_flush_output) -#define scheme_format (scheme_extension_table->scheme_format) -#define scheme_printf (scheme_extension_table->scheme_printf) -#define scheme_format_utf8 (scheme_extension_table->scheme_format_utf8) -#define scheme_printf_utf8 (scheme_extension_table->scheme_printf_utf8) -#define scheme_getc (scheme_extension_table->scheme_getc) -#define scheme_get_byte (scheme_extension_table->scheme_get_byte) -#define scheme_peekc (scheme_extension_table->scheme_peekc) -#define scheme_peek_byte (scheme_extension_table->scheme_peek_byte) -#define scheme_peekc_skip (scheme_extension_table->scheme_peekc_skip) -#define scheme_peek_byte_skip (scheme_extension_table->scheme_peek_byte_skip) -#define scheme_getc_special_ok (scheme_extension_table->scheme_getc_special_ok) -#define scheme_get_byte_special_ok (scheme_extension_table->scheme_get_byte_special_ok) -#define scheme_peekc_special_ok (scheme_extension_table->scheme_peekc_special_ok) -#define scheme_peek_byte_special_ok_skip (scheme_extension_table->scheme_peek_byte_special_ok_skip) -#define scheme_peekc_special_ok_skip (scheme_extension_table->scheme_peekc_special_ok_skip) -#define scheme_ungetc (scheme_extension_table->scheme_ungetc) -#define scheme_byte_ready (scheme_extension_table->scheme_byte_ready) -#define scheme_char_ready (scheme_extension_table->scheme_char_ready) -#define scheme_peekc_is_ungetc (scheme_extension_table->scheme_peekc_is_ungetc) -#define scheme_need_wakeup (scheme_extension_table->scheme_need_wakeup) -#define scheme_get_byte_string (scheme_extension_table->scheme_get_byte_string) -#define scheme_get_byte_string_unless (scheme_extension_table->scheme_get_byte_string_unless) -#define scheme_get_byte_string_special_ok_unless (scheme_extension_table->scheme_get_byte_string_special_ok_unless) -#define scheme_progress_evt (scheme_extension_table->scheme_progress_evt) -#define scheme_peeked_read (scheme_extension_table->scheme_peeked_read) -#define scheme_get_char_string (scheme_extension_table->scheme_get_char_string) -#define scheme_get_bytes (scheme_extension_table->scheme_get_bytes) -#define scheme_get_ready_special (scheme_extension_table->scheme_get_ready_special) -#define scheme_tell (scheme_extension_table->scheme_tell) -#define scheme_tell_can_redirect (scheme_extension_table->scheme_tell_can_redirect) -#define scheme_output_tell (scheme_extension_table->scheme_output_tell) -#define scheme_tell_line (scheme_extension_table->scheme_tell_line) -#define scheme_tell_column (scheme_extension_table->scheme_tell_column) -#define scheme_tell_all (scheme_extension_table->scheme_tell_all) -#define scheme_set_port_location (scheme_extension_table->scheme_set_port_location) -#define scheme_count_lines (scheme_extension_table->scheme_count_lines) -#define scheme_close_input_port (scheme_extension_table->scheme_close_input_port) -#define scheme_close_output_port (scheme_extension_table->scheme_close_output_port) -#define scheme_write_special (scheme_extension_table->scheme_write_special) -#define scheme_write_special_nonblock (scheme_extension_table->scheme_write_special_nonblock) -#define scheme_make_write_evt (scheme_extension_table->scheme_make_write_evt) -#define scheme_port_record (scheme_extension_table->scheme_port_record) -#define scheme_input_port_record (scheme_extension_table->scheme_input_port_record) -#define scheme_output_port_record (scheme_extension_table->scheme_output_port_record) -#define scheme_is_input_port (scheme_extension_table->scheme_is_input_port) -#define scheme_is_output_port (scheme_extension_table->scheme_is_output_port) -#define scheme_make_port_type (scheme_extension_table->scheme_make_port_type) -#define scheme_make_input_port (scheme_extension_table->scheme_make_input_port) -#define scheme_make_output_port (scheme_extension_table->scheme_make_output_port) -#define scheme_set_next_port_custodian (scheme_extension_table->scheme_set_next_port_custodian) -#define scheme_set_port_location_fun (scheme_extension_table->scheme_set_port_location_fun) -#define scheme_set_port_count_lines_fun (scheme_extension_table->scheme_set_port_count_lines_fun) -#define scheme_port_count_lines (scheme_extension_table->scheme_port_count_lines) -#define scheme_progress_evt_via_get (scheme_extension_table->scheme_progress_evt_via_get) -#define scheme_peeked_read_via_get (scheme_extension_table->scheme_peeked_read_via_get) -#define scheme_write_evt_via_write (scheme_extension_table->scheme_write_evt_via_write) -#define scheme_write_special_evt_via_write_special (scheme_extension_table->scheme_write_special_evt_via_write_special) -#define scheme_open_input_file (scheme_extension_table->scheme_open_input_file) -#define scheme_open_output_file (scheme_extension_table->scheme_open_output_file) -#define scheme_open_input_output_file (scheme_extension_table->scheme_open_input_output_file) -#define scheme_open_output_file_with_mode (scheme_extension_table->scheme_open_output_file_with_mode) -#define scheme_make_file_input_port (scheme_extension_table->scheme_make_file_input_port) -#define scheme_make_named_file_input_port (scheme_extension_table->scheme_make_named_file_input_port) -#define scheme_make_file_output_port (scheme_extension_table->scheme_make_file_output_port) -#define scheme_make_fd_input_port (scheme_extension_table->scheme_make_fd_input_port) -#define scheme_make_fd_output_port (scheme_extension_table->scheme_make_fd_output_port) -#define scheme_make_byte_string_input_port (scheme_extension_table->scheme_make_byte_string_input_port) -#define scheme_make_sized_byte_string_input_port (scheme_extension_table->scheme_make_sized_byte_string_input_port) -#define scheme_make_byte_string_output_port (scheme_extension_table->scheme_make_byte_string_output_port) -#define scheme_get_sized_byte_string_output (scheme_extension_table->scheme_get_sized_byte_string_output) -#define scheme_get_reset_sized_byte_string_output (scheme_extension_table->scheme_get_reset_sized_byte_string_output) -#define scheme_pipe (scheme_extension_table->scheme_pipe) -#define scheme_pipe_with_limit (scheme_extension_table->scheme_pipe_with_limit) -#define scheme_make_null_output_port (scheme_extension_table->scheme_make_null_output_port) -#define scheme_make_redirect_output_port (scheme_extension_table->scheme_make_redirect_output_port) -#define scheme_set_file_position (scheme_extension_table->scheme_set_file_position) -#define scheme_file_exists (scheme_extension_table->scheme_file_exists) -#define scheme_directory_exists (scheme_extension_table->scheme_directory_exists) -#define scheme_expand_filename (scheme_extension_table->scheme_expand_filename) -#define scheme_expand_user_filename (scheme_extension_table->scheme_expand_user_filename) -#define scheme_expand_string_filename (scheme_extension_table->scheme_expand_string_filename) -#define scheme_os_getcwd (scheme_extension_table->scheme_os_getcwd) -#define scheme_os_setcwd (scheme_extension_table->scheme_os_setcwd) -#define scheme_getdrive (scheme_extension_table->scheme_getdrive) -#define scheme_split_path (scheme_extension_table->scheme_split_path) -#define scheme_build_path (scheme_extension_table->scheme_build_path) -#define scheme_path_to_directory_path (scheme_extension_table->scheme_path_to_directory_path) -#define scheme_path_to_complete_path (scheme_extension_table->scheme_path_to_complete_path) -#define scheme_simplify_path (scheme_extension_table->scheme_simplify_path) -#define scheme_make_path (scheme_extension_table->scheme_make_path) -#define scheme_make_sized_path (scheme_extension_table->scheme_make_sized_path) -#define scheme_make_sized_offset_path (scheme_extension_table->scheme_make_sized_offset_path) -#define scheme_make_sized_offset_kind_path (scheme_extension_table->scheme_make_sized_offset_kind_path) -#define scheme_make_path_without_copying (scheme_extension_table->scheme_make_path_without_copying) -#define scheme_alloc_fdset_array (scheme_extension_table->scheme_alloc_fdset_array) -#define scheme_init_fdset_array (scheme_extension_table->scheme_init_fdset_array) -#define scheme_get_fdset (scheme_extension_table->scheme_get_fdset) -#define scheme_fdzero (scheme_extension_table->scheme_fdzero) -#define scheme_fdset (scheme_extension_table->scheme_fdset) -#define scheme_fdclr (scheme_extension_table->scheme_fdclr) -#define scheme_fdisset (scheme_extension_table->scheme_fdisset) -#define scheme_add_fd_handle (scheme_extension_table->scheme_add_fd_handle) -#define scheme_add_fd_eventmask (scheme_extension_table->scheme_add_fd_eventmask) -#define scheme_collapse_win_fd (scheme_extension_table->scheme_collapse_win_fd) -#define scheme_set_wakeup_time (scheme_extension_table->scheme_set_wakeup_time) -#define scheme_security_check_file (scheme_extension_table->scheme_security_check_file) -#define scheme_security_check_file_link (scheme_extension_table->scheme_security_check_file_link) -#define scheme_security_check_network (scheme_extension_table->scheme_security_check_network) -#define scheme_get_host_address (scheme_extension_table->scheme_get_host_address) -#define scheme_free_host_address (scheme_extension_table->scheme_free_host_address) -#define scheme_host_address_strerror (scheme_extension_table->scheme_host_address_strerror) -#define scheme_getnameinfo (scheme_extension_table->scheme_getnameinfo) -#define scheme_get_port_file_descriptor (scheme_extension_table->scheme_get_port_file_descriptor) -#define scheme_get_port_fd (scheme_extension_table->scheme_get_port_fd) -#define scheme_get_port_socket (scheme_extension_table->scheme_get_port_socket) -#define scheme_socket_to_ports (scheme_extension_table->scheme_socket_to_ports) -#define scheme_fd_to_semaphore (scheme_extension_table->scheme_fd_to_semaphore) -#define scheme_set_type_printer (scheme_extension_table->scheme_set_type_printer) -#define scheme_print_bytes (scheme_extension_table->scheme_print_bytes) -#define scheme_print_utf8 (scheme_extension_table->scheme_print_utf8) -#define scheme_print_string (scheme_extension_table->scheme_print_string) -#define scheme_read_byte_string (scheme_extension_table->scheme_read_byte_string) -#define scheme_make_namespace (scheme_extension_table->scheme_make_namespace) -#define scheme_add_global (scheme_extension_table->scheme_add_global) -#define scheme_add_global_symbol (scheme_extension_table->scheme_add_global_symbol) -#define scheme_make_envunbox (scheme_extension_table->scheme_make_envunbox) -#define scheme_lookup_global (scheme_extension_table->scheme_lookup_global) -#define scheme_global_bucket (scheme_extension_table->scheme_global_bucket) -#define scheme_module_bucket (scheme_extension_table->scheme_module_bucket) -#define scheme_builtin_value (scheme_extension_table->scheme_builtin_value) -#define scheme_set_global_bucket (scheme_extension_table->scheme_set_global_bucket) -#define scheme_primitive_module (scheme_extension_table->scheme_primitive_module) -#define scheme_finish_primitive_module (scheme_extension_table->scheme_finish_primitive_module) -#define scheme_set_primitive_module_phaseless (scheme_extension_table->scheme_set_primitive_module_phaseless) -#define scheme_protect_primitive_provide (scheme_extension_table->scheme_protect_primitive_provide) -#define scheme_make_modidx (scheme_extension_table->scheme_make_modidx) -#define scheme_dynamic_require (scheme_extension_table->scheme_dynamic_require) -#define scheme_dynamic_require_reader (scheme_extension_table->scheme_dynamic_require_reader) -#define scheme_namespace_require (scheme_extension_table->scheme_namespace_require) -#define scheme_is_module_path (scheme_extension_table->scheme_is_module_path) -#define scheme_is_module_path_index (scheme_extension_table->scheme_is_module_path_index) -#define scheme_is_resolved_module_path (scheme_extension_table->scheme_is_resolved_module_path) -#define scheme_datum_to_kernel_stx (scheme_extension_table->scheme_datum_to_kernel_stx) -#define scheme_module_is_declared (scheme_extension_table->scheme_module_is_declared) -#define scheme_intern_symbol (scheme_extension_table->scheme_intern_symbol) -#define scheme_intern_exact_symbol (scheme_extension_table->scheme_intern_exact_symbol) -#define scheme_intern_exact_char_symbol (scheme_extension_table->scheme_intern_exact_char_symbol) -#define scheme_make_symbol (scheme_extension_table->scheme_make_symbol) -#define scheme_make_exact_symbol (scheme_extension_table->scheme_make_exact_symbol) -#define scheme_make_exact_char_symbol (scheme_extension_table->scheme_make_exact_char_symbol) -#define scheme_symbol_name (scheme_extension_table->scheme_symbol_name) -#define scheme_symbol_name_and_size (scheme_extension_table->scheme_symbol_name_and_size) -#define scheme_symbol_val (scheme_extension_table->scheme_symbol_val) -#define scheme_intern_exact_keyword (scheme_extension_table->scheme_intern_exact_keyword) -#define scheme_intern_exact_char_keyword (scheme_extension_table->scheme_intern_exact_char_keyword) -#define scheme_make_struct_values (scheme_extension_table->scheme_make_struct_values) -#define scheme_make_struct_names (scheme_extension_table->scheme_make_struct_names) -#define scheme_make_struct_type (scheme_extension_table->scheme_make_struct_type) -#define scheme_make_struct_type2 (scheme_extension_table->scheme_make_struct_type2) -#define scheme_make_struct_instance (scheme_extension_table->scheme_make_struct_instance) -#define scheme_is_struct_instance (scheme_extension_table->scheme_is_struct_instance) -#define scheme_struct_ref (scheme_extension_table->scheme_struct_ref) -#define scheme_struct_set (scheme_extension_table->scheme_struct_set) -#define scheme_make_struct_type_property (scheme_extension_table->scheme_make_struct_type_property) -#define scheme_make_struct_type_property_w_guard (scheme_extension_table->scheme_make_struct_type_property_w_guard) -#define scheme_struct_type_property_ref (scheme_extension_table->scheme_struct_type_property_ref) -#define scheme_chaperone_struct_type_property_ref (scheme_extension_table->scheme_chaperone_struct_type_property_ref) -#define scheme_make_location (scheme_extension_table->scheme_make_location) -#define scheme_is_location (scheme_extension_table->scheme_is_location) -#define scheme_make_inspector (scheme_extension_table->scheme_make_inspector) -#define scheme_is_subinspector (scheme_extension_table->scheme_is_subinspector) -#define scheme_eq (scheme_extension_table->scheme_eq) -#define scheme_eqv (scheme_extension_table->scheme_eqv) -#define scheme_equal (scheme_extension_table->scheme_equal) -#define scheme_chaperone_of (scheme_extension_table->scheme_chaperone_of) -#define scheme_impersonator_of (scheme_extension_table->scheme_impersonator_of) -#ifdef MZ_PRECISE_GC -#define scheme_hash_key (scheme_extension_table->scheme_hash_key) -#endif -#define scheme_equal_hash_key (scheme_extension_table->scheme_equal_hash_key) -#define scheme_equal_hash_key2 (scheme_extension_table->scheme_equal_hash_key2) -#define scheme_recur_equal_hash_key (scheme_extension_table->scheme_recur_equal_hash_key) -#define scheme_recur_equal_hash_key2 (scheme_extension_table->scheme_recur_equal_hash_key2) -#define scheme_eqv_hash_key (scheme_extension_table->scheme_eqv_hash_key) -#define scheme_eqv_hash_key2 (scheme_extension_table->scheme_eqv_hash_key2) -#define scheme_set_type_equality (scheme_extension_table->scheme_set_type_equality) -#define scheme_recur_equal (scheme_extension_table->scheme_recur_equal) -#define scheme_build_list (scheme_extension_table->scheme_build_list) -#define scheme_build_list_offset (scheme_extension_table->scheme_build_list_offset) -#define scheme_is_list (scheme_extension_table->scheme_is_list) -#define scheme_list_length (scheme_extension_table->scheme_list_length) -#define scheme_proper_list_length (scheme_extension_table->scheme_proper_list_length) -#define scheme_alloc_list (scheme_extension_table->scheme_alloc_list) -#define scheme_map_1 (scheme_extension_table->scheme_map_1) -#define scheme_car (scheme_extension_table->scheme_car) -#define scheme_cdr (scheme_extension_table->scheme_cdr) -#define scheme_cadr (scheme_extension_table->scheme_cadr) -#define scheme_caddr (scheme_extension_table->scheme_caddr) -#define scheme_vector_to_list (scheme_extension_table->scheme_vector_to_list) -#define scheme_list_to_vector (scheme_extension_table->scheme_list_to_vector) -#define scheme_append (scheme_extension_table->scheme_append) -#define scheme_reverse (scheme_extension_table->scheme_reverse) -#define scheme_box (scheme_extension_table->scheme_box) -#define scheme_unbox (scheme_extension_table->scheme_unbox) -#define scheme_set_box (scheme_extension_table->scheme_set_box) -#define scheme_make_weak_box (scheme_extension_table->scheme_make_weak_box) -#define scheme_make_late_weak_box (scheme_extension_table->scheme_make_late_weak_box) -#define scheme_make_ephemeron (scheme_extension_table->scheme_make_ephemeron) -#define scheme_ephemeron_value (scheme_extension_table->scheme_ephemeron_value) -#define scheme_ephemeron_key (scheme_extension_table->scheme_ephemeron_key) -#define scheme_make_late_will_executor (scheme_extension_table->scheme_make_late_will_executor) -#define scheme_load (scheme_extension_table->scheme_load) -#define scheme_load_extension (scheme_extension_table->scheme_load_extension) -#define scheme_register_extension_global (scheme_extension_table->scheme_register_extension_global) -#define scheme_get_seconds (scheme_extension_table->scheme_get_seconds) -#define scheme_get_milliseconds (scheme_extension_table->scheme_get_milliseconds) -#define scheme_get_inexact_milliseconds (scheme_extension_table->scheme_get_inexact_milliseconds) -#define scheme_get_process_milliseconds (scheme_extension_table->scheme_get_process_milliseconds) -#define scheme_get_process_children_milliseconds (scheme_extension_table->scheme_get_process_children_milliseconds) -#define scheme_get_thread_milliseconds (scheme_extension_table->scheme_get_thread_milliseconds) -#define scheme_banner (scheme_extension_table->scheme_banner) -#define scheme_version (scheme_extension_table->scheme_version) -#define scheme_check_proc_arity (scheme_extension_table->scheme_check_proc_arity) -#define scheme_check_proc_arity2 (scheme_extension_table->scheme_check_proc_arity2) -#define scheme_make_provided_string (scheme_extension_table->scheme_make_provided_string) -#define scheme_make_args_string (scheme_extension_table->scheme_make_args_string) -#define scheme_make_arg_lines_string (scheme_extension_table->scheme_make_arg_lines_string) -#define scheme_system_library_subpath (scheme_extension_table->scheme_system_library_subpath) -#define scheme_signal_received (scheme_extension_table->scheme_signal_received) -#define scheme_signal_received_at (scheme_extension_table->scheme_signal_received_at) -#define scheme_get_signal_handle (scheme_extension_table->scheme_get_signal_handle) -#define scheme_wait_until_signal_received (scheme_extension_table->scheme_wait_until_signal_received) -#define scheme_char_strlen (scheme_extension_table->scheme_char_strlen) -#define scheme_stx_extract_marks (scheme_extension_table->scheme_stx_extract_marks) -#define scheme_get_place_id (scheme_extension_table->scheme_get_place_id) -#define scheme_get_place_table (scheme_extension_table->scheme_get_place_table) -#define scheme_register_process_global (scheme_extension_table->scheme_register_process_global) -#define scheme_malloc_key (scheme_extension_table->scheme_malloc_key) -#define scheme_free_key (scheme_extension_table->scheme_free_key) -#define scheme_jit_find_code_end (scheme_extension_table->scheme_jit_find_code_end) -#define scheme_jit_now (scheme_extension_table->scheme_jit_now) -#define scheme_set_signal_handler (scheme_extension_table->scheme_set_signal_handler) -#ifdef MZ_PRECISE_GC -#pragma GC_VARIABLE_STACK_THOUGH_TABLE -#endif diff --git a/racket/src/include/schexn.h b/racket/src/include/schexn.h deleted file mode 100644 index 138a7160cb..0000000000 --- a/racket/src/include/schexn.h +++ /dev/null @@ -1,136 +0,0 @@ -/* This file was generated by makeexn */ -#ifndef _MZEXN_DEFINES -#define _MZEXN_DEFINES -enum { - MZEXN, - MZEXN_FAIL, - MZEXN_FAIL_CONTRACT, - MZEXN_FAIL_CONTRACT_ARITY, - MZEXN_FAIL_CONTRACT_DIVIDE_BY_ZERO, - MZEXN_FAIL_CONTRACT_NON_FIXNUM_RESULT, - MZEXN_FAIL_CONTRACT_CONTINUATION, - MZEXN_FAIL_CONTRACT_VARIABLE, - MZEXN_FAIL_READ, - MZEXN_FAIL_READ_EOF, - MZEXN_FAIL_READ_NON_CHAR, - MZEXN_FAIL_FILESYSTEM, - MZEXN_FAIL_FILESYSTEM_EXISTS, - MZEXN_FAIL_FILESYSTEM_VERSION, - MZEXN_FAIL_FILESYSTEM_ERRNO, - MZEXN_FAIL_NETWORK, - MZEXN_FAIL_NETWORK_ERRNO, - MZEXN_FAIL_OUT_OF_MEMORY, - MZEXN_FAIL_UNSUPPORTED, - MZEXN_FAIL_USER, - MZEXN_BREAK, - MZEXN_BREAK_HANG_UP, - MZEXN_BREAK_TERMINATE, - MZEXN_OTHER -}; -#endif - -#ifdef _MZEXN_TABLE - -#define MZEXN_MAXARGS 3 - -#ifdef GLOBAL_EXN_ARRAY -static exn_rec exn_table[] = { - { 2, NULL, NULL, 0, NULL, -1 }, - { 2, NULL, NULL, 0, NULL, 0 }, - { 2, NULL, NULL, 0, NULL, 1 }, - { 2, NULL, NULL, 0, NULL, 2 }, - { 2, NULL, NULL, 0, NULL, 2 }, - { 2, NULL, NULL, 0, NULL, 2 }, - { 2, NULL, NULL, 0, NULL, 2 }, - { 3, NULL, NULL, 0, NULL, 2 }, - { 3, NULL, NULL, 0, NULL, 1 }, - { 3, NULL, NULL, 0, NULL, 8 }, - { 3, NULL, NULL, 0, NULL, 8 }, - { 2, NULL, NULL, 0, NULL, 1 }, - { 2, NULL, NULL, 0, NULL, 11 }, - { 2, NULL, NULL, 0, NULL, 11 }, - { 3, NULL, NULL, 0, NULL, 11 }, - { 2, NULL, NULL, 0, NULL, 1 }, - { 3, NULL, NULL, 0, NULL, 15 }, - { 2, NULL, NULL, 0, NULL, 1 }, - { 2, NULL, NULL, 0, NULL, 1 }, - { 2, NULL, NULL, 0, NULL, 1 }, - { 3, NULL, NULL, 0, NULL, 0 }, - { 3, NULL, NULL, 0, NULL, 20 }, - { 3, NULL, NULL, 0, NULL, 20 } -}; -#else -static exn_rec *exn_table; -#endif - -#endif - -#ifdef _MZEXN_PRESETUP - -#ifndef GLOBAL_EXN_ARRAY - exn_table = (exn_rec *)scheme_malloc(sizeof(exn_rec) * MZEXN_OTHER); - exn_table[MZEXN].args = 2; - exn_table[MZEXN_FAIL].args = 2; - exn_table[MZEXN_FAIL_CONTRACT].args = 2; - exn_table[MZEXN_FAIL_CONTRACT_ARITY].args = 2; - exn_table[MZEXN_FAIL_CONTRACT_DIVIDE_BY_ZERO].args = 2; - exn_table[MZEXN_FAIL_CONTRACT_NON_FIXNUM_RESULT].args = 2; - exn_table[MZEXN_FAIL_CONTRACT_CONTINUATION].args = 2; - exn_table[MZEXN_FAIL_CONTRACT_VARIABLE].args = 3; - exn_table[MZEXN_FAIL_READ].args = 3; - exn_table[MZEXN_FAIL_READ_EOF].args = 3; - exn_table[MZEXN_FAIL_READ_NON_CHAR].args = 3; - exn_table[MZEXN_FAIL_FILESYSTEM].args = 2; - exn_table[MZEXN_FAIL_FILESYSTEM_EXISTS].args = 2; - exn_table[MZEXN_FAIL_FILESYSTEM_VERSION].args = 2; - exn_table[MZEXN_FAIL_FILESYSTEM_ERRNO].args = 3; - exn_table[MZEXN_FAIL_NETWORK].args = 2; - exn_table[MZEXN_FAIL_NETWORK_ERRNO].args = 3; - exn_table[MZEXN_FAIL_OUT_OF_MEMORY].args = 2; - exn_table[MZEXN_FAIL_UNSUPPORTED].args = 2; - exn_table[MZEXN_FAIL_USER].args = 2; - exn_table[MZEXN_BREAK].args = 3; - exn_table[MZEXN_BREAK_HANG_UP].args = 3; - exn_table[MZEXN_BREAK_TERMINATE].args = 3; -#endif - -#endif - -#ifdef _MZEXN_DECL_FIELDS - static const char *MZEXN_FIELDS[2] = { "message", "continuation-marks" }; - static const char *MZEXN_FAIL_CONTRACT_VARIABLE_FIELDS[1] = { "id" }; - static const char *MZEXN_FAIL_READ_FIELDS[1] = { "srclocs" }; - static const char *MZEXN_FAIL_FILESYSTEM_ERRNO_FIELDS[1] = { "errno" }; - static const char *MZEXN_FAIL_NETWORK_ERRNO_FIELDS[1] = { "errno" }; - static const char *MZEXN_BREAK_FIELDS[1] = { "continuation" }; -#endif - -#ifdef _MZEXN_DECL_PROPS -# define MZEXN_FAIL_READ_PROPS scheme_make_pair(scheme_make_pair(scheme_source_property, scheme_make_prim_w_arity(extract_read_locations, "extract_read_locations", 0, -1)), scheme_null) -#endif - -#ifdef _MZEXN_SETUP - SETUP_STRUCT(MZEXN, NULL, "exn", 2, MZEXN_FIELDS, scheme_null, scheme_make_prim_w_arity(exn_field_check, "exn_field_check" , 0, -1)) - SETUP_STRUCT(MZEXN_FAIL, EXN_PARENT(MZEXN), "exn:fail", 0, NULL, scheme_null, NULL) - SETUP_STRUCT(MZEXN_FAIL_CONTRACT, EXN_PARENT(MZEXN_FAIL), "exn:fail:contract", 0, NULL, scheme_null, NULL) - SETUP_STRUCT(MZEXN_FAIL_CONTRACT_ARITY, EXN_PARENT(MZEXN_FAIL_CONTRACT), "exn:fail:contract:arity", 0, NULL, scheme_null, NULL) - SETUP_STRUCT(MZEXN_FAIL_CONTRACT_DIVIDE_BY_ZERO, EXN_PARENT(MZEXN_FAIL_CONTRACT), "exn:fail:contract:divide-by-zero", 0, NULL, scheme_null, NULL) - SETUP_STRUCT(MZEXN_FAIL_CONTRACT_NON_FIXNUM_RESULT, EXN_PARENT(MZEXN_FAIL_CONTRACT), "exn:fail:contract:non-fixnum-result", 0, NULL, scheme_null, NULL) - SETUP_STRUCT(MZEXN_FAIL_CONTRACT_CONTINUATION, EXN_PARENT(MZEXN_FAIL_CONTRACT), "exn:fail:contract:continuation", 0, NULL, scheme_null, NULL) - SETUP_STRUCT(MZEXN_FAIL_CONTRACT_VARIABLE, EXN_PARENT(MZEXN_FAIL_CONTRACT), "exn:fail:contract:variable", 1, MZEXN_FAIL_CONTRACT_VARIABLE_FIELDS, scheme_null, scheme_make_prim_w_arity(variable_field_check, "variable_field_check" , 0, -1)) - SETUP_STRUCT(MZEXN_FAIL_READ, EXN_PARENT(MZEXN_FAIL), "exn:fail:read", 1, MZEXN_FAIL_READ_FIELDS, MZEXN_FAIL_READ_PROPS, scheme_make_prim_w_arity(read_field_check, "read_field_check" , 0, -1)) - SETUP_STRUCT(MZEXN_FAIL_READ_EOF, EXN_PARENT(MZEXN_FAIL_READ), "exn:fail:read:eof", 0, NULL, scheme_null, NULL) - SETUP_STRUCT(MZEXN_FAIL_READ_NON_CHAR, EXN_PARENT(MZEXN_FAIL_READ), "exn:fail:read:non-char", 0, NULL, scheme_null, NULL) - SETUP_STRUCT(MZEXN_FAIL_FILESYSTEM, EXN_PARENT(MZEXN_FAIL), "exn:fail:filesystem", 0, NULL, scheme_null, NULL) - SETUP_STRUCT(MZEXN_FAIL_FILESYSTEM_EXISTS, EXN_PARENT(MZEXN_FAIL_FILESYSTEM), "exn:fail:filesystem:exists", 0, NULL, scheme_null, NULL) - SETUP_STRUCT(MZEXN_FAIL_FILESYSTEM_VERSION, EXN_PARENT(MZEXN_FAIL_FILESYSTEM), "exn:fail:filesystem:version", 0, NULL, scheme_null, NULL) - SETUP_STRUCT(MZEXN_FAIL_FILESYSTEM_ERRNO, EXN_PARENT(MZEXN_FAIL_FILESYSTEM), "exn:fail:filesystem:errno", 1, MZEXN_FAIL_FILESYSTEM_ERRNO_FIELDS, scheme_null, scheme_make_prim_w_arity(errno_field_check, "errno_field_check" , 0, -1)) - SETUP_STRUCT(MZEXN_FAIL_NETWORK, EXN_PARENT(MZEXN_FAIL), "exn:fail:network", 0, NULL, scheme_null, NULL) - SETUP_STRUCT(MZEXN_FAIL_NETWORK_ERRNO, EXN_PARENT(MZEXN_FAIL_NETWORK), "exn:fail:network:errno", 1, MZEXN_FAIL_NETWORK_ERRNO_FIELDS, scheme_null, scheme_make_prim_w_arity(errno_field_check, "errno_field_check" , 0, -1)) - SETUP_STRUCT(MZEXN_FAIL_OUT_OF_MEMORY, EXN_PARENT(MZEXN_FAIL), "exn:fail:out-of-memory", 0, NULL, scheme_null, NULL) - SETUP_STRUCT(MZEXN_FAIL_UNSUPPORTED, EXN_PARENT(MZEXN_FAIL), "exn:fail:unsupported", 0, NULL, scheme_null, NULL) - SETUP_STRUCT(MZEXN_FAIL_USER, EXN_PARENT(MZEXN_FAIL), "exn:fail:user", 0, NULL, scheme_null, NULL) - SETUP_STRUCT(MZEXN_BREAK, EXN_PARENT(MZEXN), "exn:break", 1, MZEXN_BREAK_FIELDS, scheme_null, scheme_make_prim_w_arity(break_field_check, "break_field_check" , 0, -1)) - SETUP_STRUCT(MZEXN_BREAK_HANG_UP, EXN_PARENT(MZEXN_BREAK), "exn:break:hang-up", 0, NULL, scheme_null, NULL) - SETUP_STRUCT(MZEXN_BREAK_TERMINATE, EXN_PARENT(MZEXN_BREAK), "exn:break:terminate", 0, NULL, scheme_null, NULL) -#endif diff --git a/racket/src/include/schgc2obj.h b/racket/src/include/schgc2obj.h deleted file mode 100644 index 9a28cf294f..0000000000 --- a/racket/src/include/schgc2obj.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef GC2_OBJHEAD_H -#define GC2_OBJHEAD_H - -#if defined(MZ_PRECISE_GC) && !defined(USE_COMPACT_3M_GC) - -#if defined(_WIN32) || defined(__CYGWIN32__) || defined(MZ_USE_LARGE_PAGE_SIZE) -# define LOG_APAGE_SIZE 16 -#else -# define LOG_APAGE_SIZE 14 -#endif -typedef struct objhead { - /* the type and size of the object */ - uintptr_t type : 3; /* if `moved`, then non-0 means moved to gen 1/2 */ - /* these are the various mark bits we use */ - uintptr_t mark : 1; - uintptr_t btc_mark : 1; - /* these are used for compaction et al*/ - uintptr_t moved : 1; - uintptr_t dead : 1; - uintptr_t size : LOG_APAGE_SIZE; - /* leftover bits are used for hashing: */ - uintptr_t hash : ((8 * sizeof(intptr_t)) - (4+3+LOG_APAGE_SIZE) ); -} objhead; - -#define OBJHEAD_SIZE (sizeof(objhead)) -#define OBJPTR_TO_OBJHEAD(p) ((objhead *) (((char *)(p)) - OBJHEAD_SIZE)) -#define OBJHEAD_TO_OBJPTR(p) ((void *) (((char *)(p)) + OBJHEAD_SIZE)) - - -XFORM_NONGCING extern int GC_is_allocated(void *p); - -#define OBJHEAD_HAS_HASH_BITS -#define OBJHEAD_HASH_BITS(p) (OBJPTR_TO_OBJHEAD(p)->hash) - -#endif - -#endif diff --git a/racket/src/include/schthread.h b/racket/src/include/schthread.h deleted file mode 100644 index 1a3009fd98..0000000000 --- a/racket/src/include/schthread.h +++ /dev/null @@ -1,769 +0,0 @@ - -/* Implements thread-local variables, which are all combined into one - big table. - - When thread-local variables are not needed, this file doesn't - declare them. Instead, declarations marked with - THREAD_LOCAL_DECL() are used. - - When thread-local variables are needed, then THREAD_LOCAL_DECL() - expands to nothing, and this file defines each thread-local variable - as a field in one big record. The record is accessed through a single - thread-local variable or through pthread_getspecific(). - - Choose the names of thread-local variables carefully. The names are - globally visible, and macros to redirect uses of thread-local - variables can create trouble and poor error messages from the C - compiler if the same name is used for a local variable. */ - -#ifndef SCHEME_THREADLOCAL_H -#define SCHEME_THREADLOCAL_H - -#include "mzconfig.h" - -# ifdef __cplusplus -extern "C" { -# endif - -#if defined(MZ_USE_PLACES) || defined(MZ_USE_FUTURES) -# define USE_THREAD_LOCAL -# ifdef _WIN32 -# if defined(_WIN64) -# if defined(__MINGW32__) -# define THREAD_LOCAL /* empty */ -# define IMPLEMENT_THREAD_LOCAL_VIA_WIN_TLS -# else -# define THREAD_LOCAL __declspec(thread) -# define MZ_THREAD_EXTERN extern -# define IMPLEMENT_THREAD_LOCAL_VIA_OFFSET -# define IMPLEMENT_THREAD_LOCAL_EXTERNALLY_VIA_PROC -# endif -# else -# define THREAD_LOCAL /* empty */ -# define IMPLEMENT_THREAD_LOCAL_VIA_WIN_TLS -# endif -# elif (defined(__APPLE__) && defined(__MACH__)) || defined(GC2_PLACES_TESTING) -# define IMPLEMENT_THREAD_LOCAL_VIA_PTHREADS -# if defined(__x86_64__) || defined(__i386__) -# define INLINE_GETSPECIFIC_ASSEMBLY_CODE -# endif -# else -# define THREAD_LOCAL __thread -# endif -#else -# define THREAD_LOCAL /* empty */ -#endif - -/* Set up MZ_EXTERN for DLL build */ -#if (defined(__WIN32__) || defined(WIN32) || defined(_WIN32) || defined(__CYGWIN32__)) \ - && !defined(LINK_EXTENSIONS_BY_TABLE) \ - && !defined(SCHEME_EMBEDDED_NO_DLL) -# define MZ_DLLIMPORT __declspec(dllimport) -# define MZ_DLLEXPORT __declspec(dllexport) -# if (defined(__mzscheme_private__) || defined(__MINGW32_DELAY_LOAD__) \ - || defined(MZ_NO_LIBRACKET_DLL) \ - || (defined(__CYGWIN32__) && !defined(MZ_USES_SHARED_LIB))) -# define MZ_DLLSPEC __declspec(dllexport) -# else -# define MZ_DLLSPEC __declspec(dllimport) -# endif -# if (defined(__CYGWIN32__) && !defined(MZ_USES_SHARED_LIB)) || defined(MZ_PRECISE_GC) -# define MZGC_DLLIMPORT -# else -# define MZGC_DLLIMPORT MZ_DLLIMPORT -# endif -#else -# define MZ_DLLSPEC -# define MZ_DLLIMPORT -# define MZ_DLLEXPORT -# define MZGC_DLLIMPORT -#endif - -#define MZ_EXTERN extern MZ_DLLSPEC - -#ifndef MZ_THREAD_EXTERN -# define MZ_THREAD_EXTERN MZ_EXTERN -#endif - -MZ_EXTERN void scheme_init_os_thread(void); - -/* **************************************************************** */ -/* Declarations that we wish were elsewhere, but are needed here to */ -/* determine the size and type of some thread-local record fields. */ -/* **************************************************************** */ - -#define STACK_COPY_CACHE_SIZE 10 -#define BIGNUM_CACHE_SIZE 16 -#define STACK_CACHE_SIZE 32 -#define NUM_MORE_CONSTANT_STXES 24 - - /* The number of cached scope sets should be a power of 2: */ -#define NUM_RECENT_SCOPE_SETS 8 - -/* This structure must be 4 words: */ -typedef struct { - void *orig_return_address; - void *stack_frame; - struct Scheme_Object *cache; - void *orig_result; -} Stack_Cache_Elem; - -typedef intptr_t rxpos; - -struct gmp_tmp_stack -{ - void *end; - void *alloc_point; - struct gmp_tmp_stack *prev; -}; - -#ifndef MZ_PRECISE_GC -typedef intptr_t objhead; -#endif - -typedef void (*Scheme_Sleep_Proc)(float seconds, void *fds); - -typedef void (*Scheme_On_Atomic_Timeout_Proc)(void *data, int must_give_up); - -/* **************************************** */ - -#ifndef USE_THREAD_LOCAL - -# define THREAD_LOCAL_DECL(x) x - -#else - -/* **************************************** */ - -typedef struct Thread_Local_Variables { - int scheme_current_place_id_; - void **GC_variable_stack_; - struct NewGC *GC_instance_; - uintptr_t GC_gen0_alloc_page_ptr_; - uintptr_t GC_gen0_alloc_page_end_; - int GC_gen0_alloc_only_; - uintptr_t force_gc_for_place_accounting_; - uintptr_t scheme_os_thread_id_; - int scheme_starting_up_; - struct rktio_t *scheme_rktio_; - void *bignum_cache_[BIGNUM_CACHE_SIZE]; - int cache_count_; - struct Scheme_Hash_Table *toplevels_ht_; - struct Scheme_Hash_Table *locals_ht_[2]; - volatile int scheme_fuel_counter_; - uintptr_t scheme_stack_boundary_; - uintptr_t volatile scheme_jit_stack_boundary_; - volatile int scheme_future_need_gc_pause_; - int scheme_use_rtcall_; - int in_jit_critical_section_; - void *jit_buffer_cache_; - intptr_t jit_buffer_cache_size_; - int jit_buffer_cache_registered_; - int scheme_continuation_application_count_; - int scheme_cont_capture_count_; - int scheme_prompt_capture_count_; - struct Scheme_Prompt *available_prompt_; - struct Scheme_Prompt *available_cws_prompt_; - struct Scheme_Prompt *available_regular_prompt_; - struct Scheme_Dynamic_Wind *available_prompt_dw_; - struct Scheme_Meta_Continuation *available_prompt_mc_; - struct Scheme_Cont *offstack_cont_; - struct Scheme_Overflow *offstack_overflow_; - struct Scheme_Overflow_Jmp *scheme_overflow_jmp_; - void *scheme_overflow_stack_start_; - void **codetab_tree_; - int during_set_; - Stack_Cache_Elem stack_cache_stack_[STACK_CACHE_SIZE]; - intptr_t stack_cache_stack_pos_; - struct Scheme_Object **fixup_runstack_base_; - int fixup_already_in_place_; - void *retry_alloc_r1_; - double scheme_jit_save_fp_; - double scheme_jit_save_fp2_; -#ifdef MZ_LONG_DOUBLE - mz_long_double scheme_jit_save_extfp_; - mz_long_double scheme_jit_save_extfp2_; -#endif - struct Scheme_Bucket_Table *starts_table_; - struct mz_proc_thread *proc_thread_self_; - struct Scheme_Object *scheme_orig_stdout_port_; - struct Scheme_Object *scheme_orig_stderr_port_; - struct Scheme_Object *scheme_orig_stdin_port_; - struct rktio_ltps_t *scheme_semaphore_fd_set_; - struct Scheme_Object *fs_change_props_; - struct Scheme_Custodian *new_port_cust_; - char *read_string_byte_buffer_; - struct ITimer_Data *itimerdata_; - char *quick_buffer_; - char *quick_encode_buffer_; - char *quick_print_buffer_; - struct Scheme_Hash_Table *cache_ht_; - char *regstr_; - char *regparsestr_; - int regmatchmin_; - int regmatchmax_; - int regmaxbackposn_; - int regsavepos_; - struct Scheme_Hash_Table *regbackknown_; - struct Scheme_Hash_Table *regbackdepends_; - rxpos regparse_; - rxpos regparse_end_; - int regnpar_; - int regncounter_; - rxpos regcode_; - rxpos regcodesize_; - rxpos regcodemax_; - intptr_t regmaxlookback_; - const char *regerrorwho_; - Scheme_Object *regerrorproc_; - Scheme_Object *regerrorval_; - intptr_t rx_buffer_size_; - rxpos *startp_buffer_cache_; - rxpos *endp_buffer_cache_; - rxpos *maybep_buffer_cache_; - rxpos *match_stack_buffer_cache_; - uintptr_t scheme_os_thread_stack_base_; - struct Scheme_Object *scheme_system_idle_channel_; - struct Scheme_Object *system_idle_put_evt_; - void *stack_copy_cache_[STACK_COPY_CACHE_SIZE]; - intptr_t stack_copy_size_cache_[STACK_COPY_CACHE_SIZE]; - int scc_pos_; - struct Scheme_Instance *scheme_startup_instance_; - struct startup_instance_top_t *c_startup_instance_top_; - struct Scheme_Thread *scheme_current_thread_; - struct Scheme_Thread *scheme_main_thread_; - struct Scheme_Thread *scheme_first_thread_; - struct Scheme_Thread *gc_prep_thread_chain_; - struct Scheme_Thread_Set *scheme_thread_set_top_; - struct Scheme_Current_LWC *scheme_current_lwc_; - intptr_t process_time_at_swap_; - intptr_t process_time_skips_; - int num_running_threads_; - int swap_no_setjmp_; - int thread_swap_count_; - int scheme_did_gc_count_; - struct Scheme_Future_State *scheme_future_state_; - struct Scheme_Future_Thread_State *scheme_future_thread_state_; - void *jit_future_storage_[4]; - struct Scheme_Object **scheme_current_runstack_start_; - struct Scheme_Object **scheme_current_runstack_; - intptr_t scheme_current_cont_mark_stack_; - intptr_t scheme_current_cont_mark_pos_; - struct Scheme_Custodian *main_custodian_; - struct Scheme_Hash_Table *limited_custodians_; - struct Scheme_Plumber *initial_plumber_; - struct Scheme_Config *initial_config_; - struct Scheme_Thread *swap_target_; - struct Scheme_Object *scheduled_kills_; - struct Scheme_Hash_Table *late_will_executors_with_pending_; - int do_atomic_; - int missed_context_switch_; - int all_breaks_disabled_; - int have_activity_; - int scheme_active_but_sleeping_; - int thread_ended_with_activity_; - int scheme_no_stack_overflow_; - int needs_sleep_cancelled_; - double needs_sleep_time_end_; - int tls_pos_; - struct Scheme_Object *the_nested_exn_handler_; - struct Scheme_Object *cust_closers_; - struct Scheme_Object *thread_swap_callbacks_; - struct Scheme_Object *thread_swap_out_callbacks_; - struct Scheme_Object *recycle_cell_; - struct Scheme_Object *maybe_recycle_cell_; - int recycle_cc_count_; - void *gmp_mem_pool_; - uintptr_t max_total_allocation_; - uintptr_t current_total_allocation_; - struct gmp_tmp_stack gmp_tmp_xxx_; - struct gmp_tmp_stack *gmp_tmp_current_; - struct Scheme_Logger *scheme_main_logger_; - struct Scheme_Logger *scheme_gc_logger_; - struct Scheme_Logger *scheme_future_logger_; - struct Scheme_Logger *scheme_place_logger_; - int scheme_overflow_count_; - struct Scheme_Object *original_pwd_; - void *file_path_wc_buffer_; - intptr_t scheme_hash_request_count_; - intptr_t scheme_hash_iteration_count_; - struct Scheme_Bucket_Table *scheme_namespace_to_env_; - int special_is_ok_; - int scheme_force_port_closed_; - int fd_reserved_; - struct rktio_fd_t *the_fd_; - int scheme_num_read_syntax_objects_; - struct Scheme_Load_Delay *clear_bytes_chain_; - const char *failure_msg_for_read_; - void **dgc_array_; - int *dgc_count_; - int dgc_size_; - void (*save_oom_)(void); - int current_lifetime_; - int scheme_main_was_once_suspended_; - int buffer_init_size_; - uintptr_t scheme_total_gc_time_; - uintptr_t start_this_gc_time_; - uintptr_t end_this_gc_time_; - double start_this_gc_real_time_; - double end_this_gc_real_time_; - struct Scheme_Struct_Type *gc_info_prefab_; - struct Scheme_Struct_Type *place_event_prefab_; - volatile short delayed_break_ready_; - struct Scheme_Thread *main_break_target_thread_; - intptr_t scheme_code_page_total_; - intptr_t scheme_code_total_; - intptr_t scheme_code_count_; - intptr_t max_gc_pre_used_bytes_; - intptr_t max_code_page_total_; - int num_major_garbage_collections_; - int num_minor_garbage_collections_; - int locale_on_; - void *current_locale_name_ptr_; - char *cached_locale_encoding_name_; - struct rktio_converter_t *cached_locale_to_converter_; - struct rktio_converter_t *cached_locale_from_converter_; - int gensym_counter_; - struct Scheme_Object *dummy_input_port_; - struct Scheme_Object *dummy_output_port_; - struct Scheme_Hash_Table *opened_libs_; - struct mzrt_mutex *jit_lock_; - struct free_list_entry *free_list_; - int free_list_bucket_count_; - void *code_allocation_page_list_; - struct Scheme_Bucket_Table *prefab_table_; - struct Scheme_Hash_Table *place_local_symbol_table_; - struct Scheme_Hash_Table *place_local_keyword_table_; - struct Scheme_Hash_Table *place_local_parallel_symbol_table_; - struct Scheme_Bucket_Table *literal_string_table_; - struct Scheme_Bucket_Table *literal_number_table_; - struct FFI_Sync_Queue *ffi_sync_queue_; - struct Scheme_GC_Pre_Post_Callback_Desc *gc_prepost_callback_descs_; - struct Scheme_Hash_Table *place_local_misc_table_; - int place_evts_array_size_; - struct Evt **place_evts_; - struct Scheme_Place_Object *place_object_; - struct Scheme_Place *all_child_places_; - struct Scheme_Place_Bi_Channel_Link *place_channel_links_; - struct Scheme_Object **reusable_ifs_stack_; - struct Scheme_Object *group_member_cache_; - struct Scheme_Prefix *scheme_prefix_finalize_; - struct Scheme_Prefix *scheme_inc_prefix_finalize_; - struct Scheme_Hash_Table *loaded_extensions_; - struct Scheme_Hash_Table *fullpath_loaded_extensions_; - Scheme_Sleep_Proc scheme_place_sleep_; - struct Scheme_Object *thread_sleep_callback_; - int thread_sleep_callback_fd_; - struct GHBN_Thread_Data *ghbn_thread_data_; - Scheme_On_Atomic_Timeout_Proc on_atomic_timeout_; - void *on_atomic_timeout_data_; - int atomic_timeout_auto_suspend_; - int atomic_timeout_atomic_level_; - struct Scheme_Object *configuration_callback_cache_[2]; - struct FFI_Orig_Place_Call *cached_orig_place_todo_; - struct Scheme_Hash_Table *ffi_lock_ht_; - struct Scheme_Object *is_syntax_proc_; - struct Scheme_Object *expander_syntax_to_datum_proc_; - struct Scheme_Hash_Table *local_primitive_tables_; - struct Scheme_Object *current_linklet_native_lambdas_; -} Thread_Local_Variables; - -#if defined(IMPLEMENT_THREAD_LOCAL_VIA_PTHREADS) -/* Using Pthread getspecific() */ -# include -MZ_EXTERN pthread_key_t scheme_thread_local_key; -# if defined(__APPLE__) && defined(__MACH__) -# define PREFER_TO_CACHE_THREAD_LOCAL -MZ_EXTERN int scheme_thread_local_offset; -# endif -# ifndef INLINE_GETSPECIFIC_ASSEMBLY_CODE -# define scheme_get_thread_local_variables() ((Thread_Local_Variables *)pthread_getspecific(scheme_thread_local_key)) -# ifdef MZ_XFORM -XFORM_GC_VARIABLE_STACK_THROUGH_GETSPECIFIC; -# endif -# else -# ifdef MZ_XFORM -START_XFORM_SKIP; -# endif -static inline Thread_Local_Variables *scheme_get_thread_local_variables(void) __attribute__((used)); -static inline Thread_Local_Variables *scheme_get_thread_local_variables(void) { - Thread_Local_Variables *x = NULL; -# if defined(__APPLE__) && defined(__MACH__) -# if defined(__x86_64__) - asm("movq %%gs:0(%1,%2,8), %0" : "=r"(x) : "r"(scheme_thread_local_offset), "r"((int)scheme_thread_local_key)); -# else - asm("movl %%gs:0(%1,%2,4), %0" : "=r"(x) : "r"(scheme_thread_local_offset), "r"(scheme_thread_local_key)); -# endif -# elif defined(linux) -# if defined(__x86_64__) - asm( "mov %1, %%eax;" - "shl $0x4, %%rax;" - "mov %%fs:0x10, %%rdx;" - "mov 0x118(%%rax,%%rdx), %0;" - :"=r"(x) /* output */ - :"r"(scheme_thread_local_key) - :"%rax", "%rdx" /* clobbered register */ - ); -# else -# error scheme_get_thread_local_variables no defined on this platform -# endif -# else -# error scheme_get_thread_local_variables no defined on this platform -# endif - return x; -} -# ifdef MZ_XFORM -END_XFORM_SKIP; -XFORM_GC_VARIABLE_STACK_THROUGH_FUNCTION; -# endif -# endif -#elif defined(IMPLEMENT_THREAD_LOCAL_VIA_PROCEDURE) -/* Using external scheme_get_thread_local_variables() procedure */ -MZ_EXTERN Thread_Local_Variables *scheme_get_thread_local_variables(void); -# ifdef MZ_XFORM -XFORM_GC_VARIABLE_STACK_THROUGH_FUNCTION; -# endif -#elif defined(IMPLEMENT_THREAD_LOCAL_VIA_WIN_TLS) -# ifdef MZ_XFORM -START_XFORM_SKIP; -# endif -MZ_EXTERN Thread_Local_Variables *scheme_external_get_thread_local_variables(void); -# ifdef __mzscheme_private__ -/* In the Racket DLL, need thread-local to be fast: */ -MZ_EXTERN uintptr_t scheme_tls_delta; -# ifdef MZ_USE_WIN_TLS_VIA_DLL -MZ_EXTERN int scheme_tls_index; -# endif -static __inline Thread_Local_Variables **scheme_get_thread_local_variables_ptr(void) { -# ifdef __MINGW32__ - Thread_Local_Variables **x; -# ifdef _WIN64 - asm ( - "mov %%gs:(0x58), %%rax;" - "mov (%%rax), %%rax;" - "add %1, %%rax;" - "mov %%rax, %0;" - :"=r"(x) /* output */ - :"r"(scheme_tls_delta) - :"%rax" /* clobbered register */ - ); -# else - asm ( - "mov %%fs:(0x2C), %%eax;" - "mov (%%eax), %%eax;" - "add %1, %%eax;" - "mov %%eax, %0;" - :"=r"(x) /* output */ - :"r"(scheme_tls_delta) - :"%eax" /* clobbered register */ - ); -# endif - return x; -# else - __asm { mov eax, FS:[0x2C] -# ifdef MZ_USE_WIN_TLS_VIA_DLL - add eax, scheme_tls_index -# endif - mov eax, [eax] - add eax, scheme_tls_delta } - /* result is in eax */ -# endif -} -static __inline Thread_Local_Variables *scheme_get_thread_local_variables(void) { - return *scheme_get_thread_local_variables_ptr(); -} -# else -/* Outside the Racket DLL, slower thread-local is ok: */ -static __inline Thread_Local_Variables *scheme_get_thread_local_variables(void) { - return scheme_external_get_thread_local_variables(); -} -# endif -# ifdef MZ_XFORM -END_XFORM_SKIP; -XFORM_GC_VARIABLE_STACK_THROUGH_FUNCTION; -# endif -#else -/* Using `THREAD_LOCAL' variable: */ -# if defined(IMPLEMENT_THREAD_LOCAL_EXTERNALLY_VIA_PROC) && !defined(__mzscheme_private__) -# ifdef MZ_XFORM -START_XFORM_SKIP; -# endif -MZ_EXTERN Thread_Local_Variables *scheme_external_get_thread_local_variables(void); -static __inline Thread_Local_Variables *scheme_get_thread_local_variables(void) { - return scheme_external_get_thread_local_variables(); -} -# ifdef MZ_XFORM -END_XFORM_SKIP; -XFORM_GC_VARIABLE_STACK_THROUGH_FUNCTION; -# endif -# elif defined (IMPLEMENT_THREAD_LOCAL_VIA_OFFSET) -MZ_THREAD_EXTERN THREAD_LOCAL Thread_Local_Variables scheme_thread_locals_space; -extern int scheme_tls_delta; -# define scheme_get_thread_local_variables() ((Thread_Local_Variables *)((char *)&scheme_thread_locals_space + scheme_tls_delta)) -# ifdef MZ_XFORM -XFORM_GC_VARIABLE_STACK_THROUGH_DELTA; -# endif -# else -MZ_THREAD_EXTERN THREAD_LOCAL Thread_Local_Variables scheme_thread_locals; -# define scheme_get_thread_local_variables() (&scheme_thread_locals) -# ifdef MZ_XFORM -XFORM_GC_VARIABLE_STACK_THROUGH_THREAD_LOCAL; -# endif -# endif -#endif - -/* **************************************** */ - -#ifdef MZ_XFORM -# define XOA XFORM_OK_ASSIGN -#else -# define XOA /* empty */ -#endif - -#define scheme_current_place_id XOA (scheme_get_thread_local_variables()->scheme_current_place_id_) -#define GC_objhead_template XOA (scheme_get_thread_local_variables()->GC_objhead_template_) -#define GC_instance XOA (scheme_get_thread_local_variables()->GC_instance_) -#define GC_gen0_alloc_page_ptr XOA (scheme_get_thread_local_variables()->GC_gen0_alloc_page_ptr_) -#define GC_gen0_alloc_page_end XOA (scheme_get_thread_local_variables()->GC_gen0_alloc_page_end_) -#define GC_gen0_alloc_only XOA (scheme_get_thread_local_variables()->GC_gen0_alloc_only_) -#define GC_variable_stack XOA (scheme_get_thread_local_variables()->GC_variable_stack_) -#define force_gc_for_place_accounting XOA (scheme_get_thread_local_variables()->force_gc_for_place_accounting_) -#define scheme_os_thread_id XOA (scheme_get_thread_local_variables()->scheme_os_thread_id_) -#define scheme_starting_up XOA (scheme_get_thread_local_variables()->scheme_starting_up_) -#define scheme_rktio XOA (scheme_get_thread_local_variables()->scheme_rktio_) -#define bignum_cache XOA (scheme_get_thread_local_variables()->bignum_cache_) -#define cache_count XOA (scheme_get_thread_local_variables()->cache_count_) -#define toplevels_ht XOA (scheme_get_thread_local_variables()->toplevels_ht_) -#define locals_ht XOA (scheme_get_thread_local_variables()->locals_ht_) -#define scheme_fuel_counter XOA (scheme_get_thread_local_variables()->scheme_fuel_counter_) -#define scheme_stack_boundary XOA (scheme_get_thread_local_variables()->scheme_stack_boundary_) -#define scheme_jit_stack_boundary XOA (scheme_get_thread_local_variables()->scheme_jit_stack_boundary_) -#define scheme_future_need_gc_pause XOA (scheme_get_thread_local_variables()->scheme_future_need_gc_pause_) -#define scheme_use_rtcall XOA (scheme_get_thread_local_variables()->scheme_use_rtcall_) -#define in_jit_critical_section XOA (scheme_get_thread_local_variables()->in_jit_critical_section_) -#define jit_buffer_cache XOA (scheme_get_thread_local_variables()->jit_buffer_cache_) -#define jit_buffer_cache_size XOA (scheme_get_thread_local_variables()->jit_buffer_cache_size_) -#define jit_buffer_cache_registered XOA (scheme_get_thread_local_variables()->jit_buffer_cache_registered_) -#define scheme_continuation_application_count XOA (scheme_get_thread_local_variables()->scheme_continuation_application_count_) -#define scheme_cont_capture_count XOA (scheme_get_thread_local_variables()->scheme_cont_capture_count_) -#define scheme_prompt_capture_count XOA (scheme_get_thread_local_variables()->scheme_prompt_capture_count_) -#define available_prompt XOA (scheme_get_thread_local_variables()->available_prompt_) -#define available_cws_prompt XOA (scheme_get_thread_local_variables()->available_cws_prompt_) -#define available_regular_prompt XOA (scheme_get_thread_local_variables()->available_regular_prompt_) -#define available_prompt_dw XOA (scheme_get_thread_local_variables()->available_prompt_dw_) -#define available_prompt_mc XOA (scheme_get_thread_local_variables()->available_prompt_mc_) -#define offstack_cont XOA (scheme_get_thread_local_variables()->offstack_cont_) -#define offstack_overflow XOA (scheme_get_thread_local_variables()->offstack_overflow_) -#define scheme_overflow_jmp XOA (scheme_get_thread_local_variables()->scheme_overflow_jmp_) -#define scheme_overflow_stack_start XOA (scheme_get_thread_local_variables()->scheme_overflow_stack_start_) -#define codetab_tree XOA (scheme_get_thread_local_variables()->codetab_tree_) -#define during_set XOA (scheme_get_thread_local_variables()->during_set_) -#define thread_local_pointers XOA (scheme_get_thread_local_variables()->thread_local_pointers_) -#define stack_cache_stack XOA (scheme_get_thread_local_variables()->stack_cache_stack_) -#define stack_cache_stack_pos XOA (scheme_get_thread_local_variables()->stack_cache_stack_pos_) -#define fixup_runstack_base XOA (scheme_get_thread_local_variables()->fixup_runstack_base_) -#define fixup_already_in_place XOA (scheme_get_thread_local_variables()->fixup_already_in_place_) -#define retry_alloc_r1 XOA (scheme_get_thread_local_variables()->retry_alloc_r1_) -#define scheme_jit_save_fp XOA (scheme_get_thread_local_variables()->scheme_jit_save_fp_) -#define scheme_jit_save_fp2 XOA (scheme_get_thread_local_variables()->scheme_jit_save_fp2_) -#ifdef MZ_LONG_DOUBLE -#define scheme_jit_save_extfp XOA (scheme_get_thread_local_variables()->scheme_jit_save_extfp_) -#define scheme_jit_save_extfp2 XOA (scheme_get_thread_local_variables()->scheme_jit_save_extfp2_) -#endif -#define starts_table XOA (scheme_get_thread_local_variables()->starts_table_) -#define proc_thread_self XOA (scheme_get_thread_local_variables()->proc_thread_self_) -#define scheme_orig_stdout_port XOA (scheme_get_thread_local_variables()->scheme_orig_stdout_port_) -#define scheme_orig_stderr_port XOA (scheme_get_thread_local_variables()->scheme_orig_stderr_port_) -#define scheme_orig_stdin_port XOA (scheme_get_thread_local_variables()->scheme_orig_stdin_port_) -#define scheme_semaphore_fd_set XOA (scheme_get_thread_local_variables()->scheme_semaphore_fd_set_) -#define fs_change_props XOA (scheme_get_thread_local_variables()->fs_change_props_) -#define new_port_cust XOA (scheme_get_thread_local_variables()->new_port_cust_) -#define read_string_byte_buffer XOA (scheme_get_thread_local_variables()->read_string_byte_buffer_) -#define itimerdata XOA (scheme_get_thread_local_variables()->itimerdata_) -#define quick_buffer XOA (scheme_get_thread_local_variables()->quick_buffer_) -#define quick_encode_buffer XOA (scheme_get_thread_local_variables()->quick_encode_buffer_) -#define quick_print_buffer XOA (scheme_get_thread_local_variables()->quick_print_buffer_) -#define cache_ht XOA (scheme_get_thread_local_variables()->cache_ht_) -#define regstr XOA (scheme_get_thread_local_variables()->regstr_) -#define regparsestr XOA (scheme_get_thread_local_variables()->regparsestr_) -#define regmatchmin XOA (scheme_get_thread_local_variables()->regmatchmin_) -#define regmatchmax XOA (scheme_get_thread_local_variables()->regmatchmax_) -#define regmaxbackposn XOA (scheme_get_thread_local_variables()->regmaxbackposn_) -#define regsavepos XOA (scheme_get_thread_local_variables()->regsavepos_) -#define regbackknown XOA (scheme_get_thread_local_variables()->regbackknown_) -#define regbackdepends XOA (scheme_get_thread_local_variables()->regbackdepends_) -#define regparse XOA (scheme_get_thread_local_variables()->regparse_) -#define regparse_end XOA (scheme_get_thread_local_variables()->regparse_end_) -#define regnpar XOA (scheme_get_thread_local_variables()->regnpar_) -#define regncounter XOA (scheme_get_thread_local_variables()->regncounter_) -#define regcode XOA (scheme_get_thread_local_variables()->regcode_) -#define regcodesize XOA (scheme_get_thread_local_variables()->regcodesize_) -#define regcodemax XOA (scheme_get_thread_local_variables()->regcodemax_) -#define regmaxlookback XOA (scheme_get_thread_local_variables()->regmaxlookback_) -#define regerrorwho XOA (scheme_get_thread_local_variables()->regerrorwho_) -#define regerrorproc XOA (scheme_get_thread_local_variables()->regerrorproc_) -#define regerrorval XOA (scheme_get_thread_local_variables()->regerrorval_) -#define rx_buffer_size XOA (scheme_get_thread_local_variables()->rx_buffer_size_) -#define startp_buffer_cache XOA (scheme_get_thread_local_variables()->startp_buffer_cache_) -#define endp_buffer_cache XOA (scheme_get_thread_local_variables()->endp_buffer_cache_) -#define maybep_buffer_cache XOA (scheme_get_thread_local_variables()->maybep_buffer_cache_) -#define match_stack_buffer_cache XOA (scheme_get_thread_local_variables()->match_stack_buffer_cache_) -#define scheme_os_thread_stack_base XOA (scheme_get_thread_local_variables()->scheme_os_thread_stack_base_) -#define scheme_system_idle_channel XOA (scheme_get_thread_local_variables()->scheme_system_idle_channel_) -#define system_idle_put_evt XOA (scheme_get_thread_local_variables()->system_idle_put_evt_) -#define stack_copy_cache XOA (scheme_get_thread_local_variables()->stack_copy_cache_) -#define stack_copy_size_cache XOA (scheme_get_thread_local_variables()->stack_copy_size_cache_) -#define scc_pos XOA (scheme_get_thread_local_variables()->scc_pos_) -#define scheme_startup_instance XOA (scheme_get_thread_local_variables()->scheme_startup_instance_) -#define c_startup_instance_top XOA (scheme_get_thread_local_variables()->c_startup_instance_top_) -#define scheme_current_thread XOA (scheme_get_thread_local_variables()->scheme_current_thread_) -#define scheme_main_thread XOA (scheme_get_thread_local_variables()->scheme_main_thread_) -#define scheme_first_thread XOA (scheme_get_thread_local_variables()->scheme_first_thread_) -#define gc_prep_thread_chain XOA (scheme_get_thread_local_variables()->gc_prep_thread_chain_) -#define scheme_thread_set_top XOA (scheme_get_thread_local_variables()->scheme_thread_set_top_) -#define scheme_current_lwc XOA (scheme_get_thread_local_variables()->scheme_current_lwc_) -#define num_running_threads XOA (scheme_get_thread_local_variables()->num_running_threads_) -#define swap_no_setjmp XOA (scheme_get_thread_local_variables()->swap_no_setjmp_) -#define thread_swap_count XOA (scheme_get_thread_local_variables()->thread_swap_count_) -#define process_time_at_swap XOA (scheme_get_thread_local_variables()->process_time_at_swap_) -#define process_time_skips XOA (scheme_get_thread_local_variables()->process_time_skips_) -#define scheme_did_gc_count XOA (scheme_get_thread_local_variables()->scheme_did_gc_count_) -#define scheme_future_state XOA (scheme_get_thread_local_variables()->scheme_future_state_) -#define scheme_future_thread_state XOA (scheme_get_thread_local_variables()->scheme_future_thread_state_) -#define jit_future_storage XOA (scheme_get_thread_local_variables()->jit_future_storage_) -#define scheme_current_runstack_start XOA (scheme_get_thread_local_variables()->scheme_current_runstack_start_) -#define scheme_current_runstack XOA (scheme_get_thread_local_variables()->scheme_current_runstack_) -#define scheme_current_cont_mark_stack XOA (scheme_get_thread_local_variables()->scheme_current_cont_mark_stack_) -#define scheme_current_cont_mark_pos XOA (scheme_get_thread_local_variables()->scheme_current_cont_mark_pos_) -#define main_custodian XOA (scheme_get_thread_local_variables()->main_custodian_) -#define last_custodian XOA (scheme_get_thread_local_variables()->last_custodian_) -#define limited_custodians XOA (scheme_get_thread_local_variables()->limited_custodians_) -#define initial_plumber XOA (scheme_get_thread_local_variables()->initial_plumber_) -#define initial_config XOA (scheme_get_thread_local_variables()->initial_config_) -#define swap_target XOA (scheme_get_thread_local_variables()->swap_target_) -#define scheduled_kills XOA (scheme_get_thread_local_variables()->scheduled_kills_) -#define late_will_executors_with_pending XOA (scheme_get_thread_local_variables()->late_will_executors_with_pending_) -#define do_atomic XOA (scheme_get_thread_local_variables()->do_atomic_) -#define missed_context_switch XOA (scheme_get_thread_local_variables()->missed_context_switch_) -#define all_breaks_disabled XOA (scheme_get_thread_local_variables()->all_breaks_disabled_) -#define have_activity XOA (scheme_get_thread_local_variables()->have_activity_) -#define scheme_active_but_sleeping XOA (scheme_get_thread_local_variables()->scheme_active_but_sleeping_) -#define thread_ended_with_activity XOA (scheme_get_thread_local_variables()->thread_ended_with_activity_) -#define scheme_no_stack_overflow XOA (scheme_get_thread_local_variables()->scheme_no_stack_overflow_) -#define needs_sleep_cancelled XOA (scheme_get_thread_local_variables()->needs_sleep_cancelled_) -#define needs_sleep_time_end XOA (scheme_get_thread_local_variables()->needs_sleep_time_end_) -#define tls_pos XOA (scheme_get_thread_local_variables()->tls_pos_) -#define the_nested_exn_handler XOA (scheme_get_thread_local_variables()->the_nested_exn_handler_) -#define cust_closers XOA (scheme_get_thread_local_variables()->cust_closers_) -#define thread_swap_callbacks XOA (scheme_get_thread_local_variables()->thread_swap_callbacks_) -#define thread_swap_out_callbacks XOA (scheme_get_thread_local_variables()->thread_swap_out_callbacks_) -#define recycle_cell XOA (scheme_get_thread_local_variables()->recycle_cell_) -#define maybe_recycle_cell XOA (scheme_get_thread_local_variables()->maybe_recycle_cell_) -#define recycle_cc_count XOA (scheme_get_thread_local_variables()->recycle_cc_count_) -#define gmp_mem_pool XOA (scheme_get_thread_local_variables()->gmp_mem_pool_) -#define max_total_allocation XOA (scheme_get_thread_local_variables()->max_total_allocation_) -#define current_total_allocation XOA (scheme_get_thread_local_variables()->current_total_allocation_) -#define gmp_tmp_xxx XOA (scheme_get_thread_local_variables()->gmp_tmp_xxx_) -#define gmp_tmp_current XOA (scheme_get_thread_local_variables()->gmp_tmp_current_) -#define scheme_main_logger XOA (scheme_get_thread_local_variables()->scheme_main_logger_) -#define scheme_gc_logger XOA (scheme_get_thread_local_variables()->scheme_gc_logger_) -#define scheme_future_logger XOA (scheme_get_thread_local_variables()->scheme_future_logger_) -#define scheme_place_logger XOA (scheme_get_thread_local_variables()->scheme_place_logger_) -#define scheme_overflow_count XOA (scheme_get_thread_local_variables()->scheme_overflow_count_) -#define original_pwd XOA (scheme_get_thread_local_variables()->original_pwd_) -#define file_path_wc_buffer XOA (scheme_get_thread_local_variables()->file_path_wc_buffer_) -#define scheme_hash_request_count XOA (scheme_get_thread_local_variables()->scheme_hash_request_count_) -#define scheme_hash_iteration_count XOA (scheme_get_thread_local_variables()->scheme_hash_iteration_count_) -#define scheme_namespace_to_env XOA (scheme_get_thread_local_variables()->scheme_namespace_to_env_) -#define special_is_ok XOA (scheme_get_thread_local_variables()->special_is_ok_) -#define scheme_force_port_closed XOA (scheme_get_thread_local_variables()->scheme_force_port_closed_) -#define fd_reserved XOA (scheme_get_thread_local_variables()->fd_reserved_) -#define the_fd XOA (scheme_get_thread_local_variables()->the_fd_) -#define scheme_num_read_syntax_objects XOA (scheme_get_thread_local_variables()->scheme_num_read_syntax_objects_) -#define clear_bytes_chain XOA (scheme_get_thread_local_variables()->clear_bytes_chain_) -#define failure_msg_for_read XOA (scheme_get_thread_local_variables()->failure_msg_for_read_) -#define dgc_array XOA (scheme_get_thread_local_variables()->dgc_array_) -#define dgc_count XOA (scheme_get_thread_local_variables()->dgc_count_) -#define dgc_size XOA (scheme_get_thread_local_variables()->dgc_size_) -#define save_oom XOA (scheme_get_thread_local_variables()->save_oom_) -#define current_lifetime XOA (scheme_get_thread_local_variables()->current_lifetime_) -#define scheme_main_was_once_suspended XOA (scheme_get_thread_local_variables()->scheme_main_was_once_suspended_) -#define buffer_init_size XOA (scheme_get_thread_local_variables()->buffer_init_size_) -#define scheme_total_gc_time XOA (scheme_get_thread_local_variables()->scheme_total_gc_time_) -#define start_this_gc_time XOA (scheme_get_thread_local_variables()->start_this_gc_time_) -#define end_this_gc_time XOA (scheme_get_thread_local_variables()->end_this_gc_time_) -#define start_this_gc_real_time XOA (scheme_get_thread_local_variables()->start_this_gc_real_time_) -#define end_this_gc_real_time XOA (scheme_get_thread_local_variables()->end_this_gc_real_time_) -#define gc_info_prefab XOA (scheme_get_thread_local_variables()->gc_info_prefab_) -#define place_event_prefab XOA (scheme_get_thread_local_variables()->place_event_prefab_) -#define delayed_break_ready XOA (scheme_get_thread_local_variables()->delayed_break_ready_) -#define main_break_target_thread XOA (scheme_get_thread_local_variables()->main_break_target_thread_) -#define scheme_code_page_total XOA (scheme_get_thread_local_variables()->scheme_code_page_total_) -#define scheme_code_total XOA (scheme_get_thread_local_variables()->scheme_code_total_) -#define scheme_code_count XOA (scheme_get_thread_local_variables()->scheme_code_count_) -#define max_gc_pre_used_bytes XOA (scheme_get_thread_local_variables()->max_gc_pre_used_bytes_) -#define max_code_page_total XOA (scheme_get_thread_local_variables()->max_code_page_total_) -#define num_major_garbage_collections XOA (scheme_get_thread_local_variables()->num_major_garbage_collections_) -#define num_minor_garbage_collections XOA (scheme_get_thread_local_variables()->num_minor_garbage_collections_) -#define locale_on XOA (scheme_get_thread_local_variables()->locale_on_) -#define current_locale_name_ptr XOA (scheme_get_thread_local_variables()->current_locale_name_ptr_) -#define cached_locale_encoding_name XOA (scheme_get_thread_local_variables()->cached_locale_encoding_name_) -#define cached_locale_to_converter XOA (scheme_get_thread_local_variables()->cached_locale_to_converter_) -#define cached_locale_from_converter XOA (scheme_get_thread_local_variables()->cached_locale_from_converter_) -#define gensym_counter XOA (scheme_get_thread_local_variables()->gensym_counter_) -#define dummy_input_port XOA (scheme_get_thread_local_variables()->dummy_input_port_) -#define dummy_output_port XOA (scheme_get_thread_local_variables()->dummy_output_port_) -#define opened_libs XOA (scheme_get_thread_local_variables()->opened_libs_) -#define jit_lock XOA (scheme_get_thread_local_variables()->jit_lock_) -#define free_list XOA (scheme_get_thread_local_variables()->free_list_) -#define free_list_bucket_count XOA (scheme_get_thread_local_variables()->free_list_bucket_count_) -#define code_allocation_page_list XOA (scheme_get_thread_local_variables()->code_allocation_page_list_) -#define prefab_table XOA (scheme_get_thread_local_variables()->prefab_table_) -#define place_local_symbol_table XOA (scheme_get_thread_local_variables()->place_local_symbol_table_) -#define place_local_keyword_table XOA (scheme_get_thread_local_variables()->place_local_keyword_table_) -#define place_local_parallel_symbol_table XOA (scheme_get_thread_local_variables()->place_local_parallel_symbol_table_) -#define literal_string_table XOA (scheme_get_thread_local_variables()->literal_string_table_) -#define literal_number_table XOA (scheme_get_thread_local_variables()->literal_number_table_) -#define ffi_sync_queue XOA (scheme_get_thread_local_variables()->ffi_sync_queue_) -#define gc_prepost_callback_descs XOA (scheme_get_thread_local_variables()->gc_prepost_callback_descs_) -#define place_local_misc_table XOA (scheme_get_thread_local_variables()->place_local_misc_table_) -#define place_evts_array_size XOA (scheme_get_thread_local_variables()->place_evts_array_size_) -#define place_evts XOA (scheme_get_thread_local_variables()->place_evts_) -#define place_object XOA (scheme_get_thread_local_variables()->place_object_) -#define all_child_places XOA (scheme_get_thread_local_variables()->all_child_places_) -#define place_channel_links XOA (scheme_get_thread_local_variables()->place_channel_links_) -#define reusable_ifs_stack XOA (scheme_get_thread_local_variables()->reusable_ifs_stack_) -#define group_member_cache XOA (scheme_get_thread_local_variables()->group_member_cache_) -#define scheme_prefix_finalize XOA (scheme_get_thread_local_variables()->scheme_prefix_finalize_) -#define scheme_inc_prefix_finalize XOA (scheme_get_thread_local_variables()->scheme_inc_prefix_finalize_) -#define loaded_extensions XOA (scheme_get_thread_local_variables()->loaded_extensions_) -#define fullpath_loaded_extensions XOA (scheme_get_thread_local_variables()->fullpath_loaded_extensions_) -#define scheme_place_sleep XOA (scheme_get_thread_local_variables()->scheme_place_sleep_) -#define thread_sleep_callback XOA (scheme_get_thread_local_variables()->thread_sleep_callback_) -#define thread_sleep_callback_fd XOA (scheme_get_thread_local_variables()->thread_sleep_callback_fd_) -#define ghbn_thread_data XOA (scheme_get_thread_local_variables()->ghbn_thread_data_) -#define on_atomic_timeout XOA (scheme_get_thread_local_variables()->on_atomic_timeout_) -#define on_atomic_timeout_data XOA (scheme_get_thread_local_variables()->on_atomic_timeout_data_) -#define atomic_timeout_auto_suspend XOA (scheme_get_thread_local_variables()->atomic_timeout_auto_suspend_) -#define atomic_timeout_atomic_level XOA (scheme_get_thread_local_variables()->atomic_timeout_atomic_level_) -#define configuration_callback_cache XOA (scheme_get_thread_local_variables()->configuration_callback_cache_) -#define cached_orig_place_todo XOA (scheme_get_thread_local_variables()->cached_orig_place_todo_) -#define ffi_lock_ht XOA (scheme_get_thread_local_variables()->ffi_lock_ht_) -#define is_syntax_proc XOA (scheme_get_thread_local_variables()->is_syntax_proc_) -#define expander_syntax_to_datum_proc XOA (scheme_get_thread_local_variables()->expander_syntax_to_datum_proc_) -#define local_primitive_tables XOA (scheme_get_thread_local_variables()->local_primitive_tables_) -#define current_linklet_native_lambdas XOA (scheme_get_thread_local_variables()->current_linklet_native_lambdas_) - -/* **************************************** */ - -# define THREAD_LOCAL_DECL(x) /* empty */ - -#endif - -/* **************************************** */ - -# ifdef __cplusplus -} -# endif - -#endif diff --git a/racket/src/include/schvers.h b/racket/src/include/schvers.h deleted file mode 100644 index e4e5378d62..0000000000 --- a/racket/src/include/schvers.h +++ /dev/null @@ -1,36 +0,0 @@ - -/* The version string has one of the forms: - X.Y - X.Y.Z Z != 0 - X.Y.Z.W W != 0 - where each X, Y, Z, W is a non-negative exact integer, Y must not - exceed 99, and Z or W must not exceed 999. Y>=90 means that this is - working towards {X+1}.0, and X.Y (Z=0, W=0) is an alpha version for - {X+1}.0; Z>=900 means working towards X.{Y+1}, and X.Y.Z as an - alpha release. - - Note that the version number in the "base" package's "info.rkt" - needs to be updated separately. -*/ - -#define MZSCHEME_VERSION_X 7 -#define MZSCHEME_VERSION_Y 8 -#define MZSCHEME_VERSION_Z 0 -#define MZSCHEME_VERSION_W 6 - -/* A level of indirection makes `#` work as needed: */ -#define AS_a_STR_HELPER(x) #x -#define AS_a_STR(x) AS_a_STR_HELPER(x) - -#if MZSCHEME_VERSION_W != 0 -# define MZSCHEME_VERSION AS_a_STR(MZSCHEME_VERSION_X) "." AS_a_STR(MZSCHEME_VERSION_Y) "." AS_a_STR(MZSCHEME_VERSION_Z) "." AS_a_STR(MZSCHEME_VERSION_W) -#elif MZSCHEME_VERSION_Z != 0 -# define MZSCHEME_VERSION AS_a_STR(MZSCHEME_VERSION_X) "." AS_a_STR(MZSCHEME_VERSION_Y) "." AS_a_STR(MZSCHEME_VERSION_Z) -#else -# define MZSCHEME_VERSION AS_a_STR(MZSCHEME_VERSION_X) "." AS_a_STR(MZSCHEME_VERSION_Y) -#endif - -#define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y) -#define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W) - -#define MZSCHEME_VM "racket" diff --git a/racket/src/include/sconfig.h b/racket/src/include/sconfig.h deleted file mode 100644 index e8936e9d79..0000000000 --- a/racket/src/include/sconfig.h +++ /dev/null @@ -1,1163 +0,0 @@ -/* - Configuration for compiling Racket - - If you want to set all the flags externally (on the command line - with -D or some other compiler-dependent way), then define - FLAGS_ALREADY_SET, and this file will be ignored. - - The best flag settings are already provided for some auto-detected - architecture/system/compilers. Otherwise, the default settings - are generic Unix. Send other architecture/system/compiler-specific - info to "racket@racket-lang.org". -*/ - -#ifndef FLAGS_ALREADY_SET - -/******** (BEGIN KNOWN ARCHITECTURE/SYSTEM CONFIGURATIONS) ********/ - -/* First, use configure-generated information */ -/* (on Windows, this is done by a manual file which is in src/worksp) */ -#include "mzconfig.h" - - /************** SunOS/Solaris with gcc ****************/ - -#if defined(sun) - -# include "uconfig.h" - -# define USE_EXPLICT_FP_FORM_CHECK - -# include -# ifdef ECHRNG -/* Solaris */ -# if defined(__i386__) -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "i386-solaris" -# elif defined(__x86_64) -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "x86_64-solaris" -# else -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "sparc-solaris" -# endif -# else -/* SunOS4 */ -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "sparc-sunos4" -# define NO_STRERROR_AVAILABLE -# define USE_ON_EXIT_FOR_ATEXIT -# endif - -# define PREFER_MMAP_LARGE_BLOCKS - -# define FMOD_CAN_RETURN_POS_ZERO - -# ifdef __i386__ -# define MZ_USE_JIT_I386 -# define MZ_JIT_USE_MPROTECT -# elif defined(__x86_64) -# define MZ_USE_JIT_X86_64 -# define MZ_JIT_USE_MPROTECT -# else -# define FLUSH_SPARC_REGISTER_WINDOWS -# endif - -# define FLAGS_ALREADY_SET - -#endif - - /************** RS6000/AIX with gcc or xlc ****************/ - -# if defined(_IBMR2) - -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "rs6k-aix" - -# include "uconfig.h" - -# define UNIX_LIMIT_STACK 33554944 - -# define FLAGS_ALREADY_SET - -#endif - - /************** Linux with gcc ****************/ - -#if defined(__linux__) - -# ifdef __ANDROID__ -# define SPLS_LINUX "android" -# else -# define SPLS_LINUX "linux" -# endif - -# if defined(__i386__) -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "i386-" SPLS_LINUX -# define REGISTER_POOR_MACHINE -# define MZ_TRY_EXTFLONUMS -# define ASM_DBLPREC_CONTROL_87 -# endif -# if defined(__powerpc__) && !defined(__powerpc64__) -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "ppc-" SPLS_LINUX -# endif -# if defined(__powerpc64__) -# if defined(__LITTLE_ENDIAN__) -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "ppc64le-" SPLS_LINUX -# else -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "ppc64-" SPLS_LINUX -# endif -# endif -# if defined(__mc68000__) -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "m68k-" SPLS_LINUX -# endif -# if defined(mips) -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "mips-" SPLS_LINUX -# endif -# if defined(__alpha__) -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "alpha-" SPLS_LINUX -# endif -# if defined(__hppa__) -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "hppa-" SPLS_LINUX -# endif -# if defined(__sparc__) -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "sparc-" SPLS_LINUX -# define FLUSH_SPARC_REGISTER_WINDOWS -# endif -# if defined(__arm__) || defined(__thumb__) -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "arm-" SPLS_LINUX -# define FFI_CALLBACK_NEED_INT_CLEAR -# endif -# if defined(__aarch64__) -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "aarch64-" SPLS_LINUX -# endif -# if defined(__x86_64__) -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "x86_64-" SPLS_LINUX -# define REGISTER_POOR_MACHINE -# define ASM_DBLPREC_CONTROL_87 -# define MZ_TRY_EXTFLONUMS -# endif -# ifndef SCHEME_PLATFORM_LIBRARY_SUBPATH -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "unknown-" SPLS_LINUX -# endif - -# include "uconfig.h" -# ifndef __ELF__ -# undef UNIX_DYNAMIC_LOAD -# endif - -# define USE_IEEE_FP_PREDS -# define USE_EXPLICT_FP_FORM_CHECK - -# define LINUX_FIND_STACK_BASE - -# define FLAGS_ALREADY_SET - -#if defined(__i386__) -# define MZ_USE_JIT_I386 -# define MZ_JIT_USE_MPROTECT -# ifndef MZ_NO_UNWIND_SUPPORT -# define MZ_USE_DWARF_LIBUNWIND -# endif -#endif -#if defined(__x86_64__) -# define MZ_USE_JIT_X86_64 -# define MZ_JIT_USE_MPROTECT -# ifndef MZ_NO_UNWIND_SUPPORT -# define MZ_USE_DWARF_LIBUNWIND -# endif -#endif -#if defined(__powerpc__) && !defined(__powerpc64__) -# define MZ_USE_JIT_PPC -#endif -# if defined(__arm__) -# define MZ_USE_JIT_ARM -#endif - -#endif - - /********************* NetBSD ***********************/ - -#if defined(__NetBSD__) - -#if defined(__i386__) -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "i386-netbsd" -#elif defined(__powerpc__) -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "ppc-netbsd" -#elif defined(__x86_64__) -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "x86_64-netbsd" -#else -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "netbsd" -#endif - -# include "uconfig.h" - -#ifndef __ELF__ -# define UNDERSCORE_DYNLOAD_SYMBOL_PREFIX -#endif - -# define USE_IEEE_FP_PREDS - -#if defined(__alpha__) -# define USE_DIVIDE_MAKE_INFINITY -#endif - -#if defined(__i386__) -# define MZ_USE_JIT_I386 -# define MZ_JIT_USE_MPROTECT -#endif -#if defined(__powerpc__) -# define MZ_USE_JIT_PPC -#endif -#if defined(__x86_64__) -# define MZ_USE_JIT_X86_64 -# define MZ_JIT_USE_MPROTECT -#endif - -# define FLAGS_ALREADY_SET - -#endif - - /************** OpenBSD with gcc ****************/ - /* Thanks to Bengt Kleberg */ - -#if defined(__OpenBSD__) && !defined(__Bitrig__) - -# if defined(__x86_64__) -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "x86_64-openbsd" -# define IMPLEMENT_WRITE_XOR_EXECUTE_BY_SIGNAL_HANDLER -# elif defined(__i386__) || defined(i386) -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "i386-openbsd" -# elif defined(__mips64__) -# if defined(__MIPSEL__) -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "mips64el-openbsd" -# else -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "mips64-openbsd" -# endif -# elif defined(__powerpc__) -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "ppc-openbsd" -# elif defined(__sparc64__) -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "sparc64-openbsd" -# elif defined(__arm__) || defined(__thumb__) -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "arm-openbsd" -# elif defined(__aarch64__) -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "aarch64-openbsd" -# elif defined(__hppa__) -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "hppa-openbsd" -# else -# error Unported platform. -# endif - -# include "uconfig.h" -# undef UNIX_FIND_STACK_BOUNDS -# define PTHREAD_STACKSEG_FIND_STACK_BOUNDS - -/* Default UNIX_STACK_MAXIMUM is too big for a non-root user. */ -# undef UNIX_STACK_MAXIMUM -# define UNIX_STACK_MAXIMUM 4194304 - -# define UNDERSCORE_DYNLOAD_SYMBOL_PREFIX - -# define USE_DLOPEN_GLOBAL_BY_DEFAULT - -# define USE_IEEE_FP_PREDS - -# define USE_MAP_ANON - -# if defined(__x86_64__) -# define MZ_USE_JIT_X86_64 -# define MZ_JIT_USE_MPROTECT -# define MZ_TRY_EXTFLONUMS -# elif defined(__i386__) -# define MZ_USE_JIT_I386 -# define MZ_JIT_USE_MPROTECT -# define MZ_TRY_EXTFLONUMS -# define REGISTER_POOR_MACHINE -# elif defined(__powerpc__) -# define MZ_USE_JIT_PPC -# elif defined(__sparc64__) -# define FLUSH_SPARC_REGISTER_WINDOWS -# define FMOD_CAN_RETURN_POS_ZERO -# elif defined(__arm__) -# define MZ_USE_JIT_ARM -# define FFI_CALLBACK_NEED_INT_CLEAR -# endif - -# define FLAGS_ALREADY_SET - -#endif - - /************** Bitrig with clang ****************/ -/* - Bitrig and OpenBSD are pretty similar in some aspects. If you are modifying - any of the next values, please test also the same changes on OpenBSD. -*/ - -#if defined(__Bitrig__) - -# if defined(__x86_64__) -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "x86_64-bitrig" -# elif defined(__arm__) || defined(__thumb__) -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "arm-bitrig" -# else -# error Unported platform. -# endif - -# include "uconfig.h" -# undef UNIX_FIND_STACK_BOUNDS -# define PTHREAD_STACKSEG_FIND_STACK_BOUNDS - -/* Default UNIX_STACK_MAXIMUM is too big for a non-root user. */ -# undef UNIX_STACK_MAXIMUM -# define UNIX_STACK_MAXIMUM 4194304 - -# define UNDERSCORE_DYNLOAD_SYMBOL_PREFIX - -# define USE_DLOPEN_GLOBAL_BY_DEFAULT - -# define USE_IEEE_FP_PREDS - -# define USE_MAP_ANON - -# if defined(__x86_64__) -# define MZ_USE_JIT_X86_64 -# define MZ_JIT_USE_MPROTECT -# define MZ_TRY_EXTFLONUMS -# elif defined(__arm__) -# define MZ_USE_JIT_ARM -# define FFI_CALLBACK_NEED_INT_CLEAR -# endif - -# define FLAGS_ALREADY_SET - -#endif - - /************** FreeBSD with clang/gcc ****************/ - -#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) - -# if defined(__i386__) -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "i386-freebsd" -# define REGISTER_POOR_MACHINE -# define MZ_USE_JIT_I386 -# define MZ_TRY_EXTFLONUMS -# if defined(__FreeBSD_kernel__) -# define ASM_DBLPREC_CONTROL_87 -# else -# define FREEBSD_CONTROL_387 -# endif -# elif defined(__amd64__) -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "amd64-freebsd" -# define REGISTER_POOR_MACHINE -# define MZ_USE_JIT_X86_64 -# define MZ_TRY_EXTFLONUMS -# if defined(__FreeBSD_kernel__) -# define ASM_DBLPREC_CONTROL_87 -# endif -# elif defined(__sparc64__) -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "sparc64-freebsd" -# define FLUSH_SPARC_REGISTER_WINDOWS -# elif defined(__arm__) -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "arm-freebsd" -# elif defined(__aarch64__) -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "aarch64-freebsd" -# elif defined(__powerpc__) -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "ppc-freebsd" -# define MZ_USE_JIT_PPC -# else -# error Unported platform. -# endif - -/* pthreads always enabled via `configure', and - initial pthread's stack size doesn't use rlimit: */ -# define ASSUME_FIXED_STACK_SIZE -# define FIXED_STACK_SIZE 1048576 - -# include "uconfig.h" - -# ifdef FREEBSD_VERSION_2x -# define UNDERSCORE_DYNLOAD_SYMBOL_PREFIX -# endif - -# define USE_UNDERSCORE_SETJMP - -# define USE_IEEE_FP_PREDS - -# define MZ_JIT_USE_MPROTECT - -# define FLAGS_ALREADY_SET - -#endif - - /************** SGI/IRIX with SGI cc ****************/ - -#if (defined(mips) || defined(__mips)) \ - && !(defined(ultrix) || defined(__ultrix) || defined(__linux__) || defined(__OpenBSD__)) - -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "mips-irix" - -# include "uconfig.h" - -# define BSTRING_INCLUDE - -# define DEFEAT_FP_COMP_OPTIMIZATION -# define FMOD_CAN_RETURN_NEG_ZERO - -# define FLAGS_ALREADY_SET - -#endif - - /************** Ultrix with gcc ****************/ - -#if defined(ultrix) || defined(__ultrix) - -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "mips-ultrix" - -# include "uconfig.h" -# undef UNIX_DYNAMIC_LOAD - -# define FLAGS_ALREADY_SET - -#endif - - /************** ALPHA/OSF1 with gcc ****************/ - -# if (defined(__alpha) || defined(__alpha__)) \ - && !defined(__linux__) && !defined(__NetBSD__) && !defined(__OpenBSD__) - -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "alpha-osf1" - -# include "uconfig.h" - -# define ALPHA_CONTROL_FP -# define USE_OSF_FP_PREDS -# define USE_DIVIDE_MAKE_INFINITY -# define ATAN2_DOESNT_WORK_WITH_INFINITIES - -# define FLAGS_ALREADY_SET - -#endif - - /************** HP/UX with cc or gcc ****************/ - -#if defined(__hpux) - -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "parisc-hpux" - -# include "uconfig.h" - -# define USE_DIVIDE_MAKE_INFINITY -# define USE_IEEE_FP_PREDS -# define USE_EXPLICT_FP_FORM_CHECK -# define ZERO_MINUS_ZERO_IS_POS_ZERO -# define LOG_ZERO_ISNT_NEG_INF - -# define FLAGS_ALREADY_SET - -#endif - - /************** x86/SCO Unix with gcc ****************/ - /* Contributed by Atanas Ivanov */ - -#if defined(_M_XENIX) && defined(_M_SYSV) - -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "sco-i386" - -# include "uconfig.h" -#ifndef __ELF__ -# undef UNIX_DYNAMIC_LOAD -#endif - -# define USE_SCO_IEEE_FP_PREDS -# define USE_EXPLICT_FP_FORM_CHECK - -# define REGISTER_POOR_MACHINE - -# define FLAGS_ALREADY_SET - -#endif - - /****************** Windows with MS Visual C ***************/ - /* See the "worksp" directory for more MSVC details. */ - -#if (defined(__BORLANDC__) \ - || ((defined(_MSC_VER) || defined(__MINGW32__)) \ - && (defined(__WIN32__) || defined(WIN32) || defined(_WIN32)))) - -# ifdef _WIN64 -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "win32\\x86_64" -# else -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "win32\\i386" -# endif - -# define SYSTEM_TYPE_NAME "windows" -# define DOS_FILE_SYSTEM - -# define USE_WINDOWS_EVENT_LOG -# define INIT_SYSLOG_LEVEL SCHEME_LOG_ERROR - -# define DO_STACK_CHECK -# define WINDOWS_FIND_STACK_BOUNDS - -# define USE_MZ_SETJMP - -# define WINDOWS_DYNAMIC_LOAD - -#ifdef _MSC_VER -# define USE_MSVC_FP_PREDS -# if _MSC_VER < 1300 -# define NAN_EQUALS_ANYTHING -# endif -# define INT64_AS_LONG_LONG -# define ATAN2_DOESNT_WORK_WITH_INFINITIES - /* With VC 7, ATAN2_DOESNT... wasn't needed, and - POW_HANDLES_INF_CORRECTLY worked, too. */ -# define SIN_COS_NEED_DEOPTIMIZE -# define AVOID_INT_TO_FLOAT_TRUNCATION -#endif -#ifdef __BORLANDC__ -# define NAN_EQUALS_ANYTHING -# define ATAN2_DOESNT_WORK_WITH_INFINITIES -# define ATAN2_DOESNT_WORK_WITH_NAN -# define SQRT_NAN_IS_WRONG -# define LOG_ZERO_ISNT_NEG_INF -# define TRIG_ZERO_NEEDS_SIGN_CHECK -# define NEED_TO_DEFINE_MATHERR -#endif -#ifdef __MINGW32__ -# define USE_IEEE_FP_PREDS -# define ATAN2_DOESNT_WORK_WITH_INFINITIES -#endif - -# define IO_INCLUDE -# define DONT_IGNORE_PIPE_SIGNAL - -# define WINDOWS_PROCESSES -# define WINDOWS_FILE_HANDLES -# ifndef MZ_USE_DETERMINSTIC_FUEL -# define USE_WIN32_THREAD_TIMER -# endif - -# define NO_SIGHUP_HANDLER - -#define PRINTF_INTPTR_SIZE_PREFIX "I" - -/* MS Visual C++ likes underscore prefixes */ -#if defined(_MSC_VER) -# define MSC_IZE(x) _ ## x -# define M_MSC_IZE(x) MSC_IZE(x) -# define DIRECT_INCLUDE -# else -# define M_MSC_IZE(x) x -#endif - -#if defined(__MINGW32__) -# define MSC_IZE(x) _ ## x -#endif - -#ifdef __BORLANDC__ -# define MSCBOR_IZE(x) _ ## x -# define DIR_INCLUDE -# define IGNORE_BY_BORLAND_CONTROL_87 -#endif - -#if defined(__MINGW32__) && defined(USE_DIRECT_LONG_DOUBLE) -/* Beware: different from the MSVC build when SSE-based floating-point - math is enabled in the C compiler. Sets the floating-point mode to - extended precision to support extflonums, and changing precision - may affect other libraries. */ -# define MZ_TRY_EXTFLONUMS -# define ASM_DBLPREC_CONTROL_87 -#else -# define MZ_LONG_DOUBLE -# define IGNORE_BY_MS_CONTROL_87 -# define MZ_NEED_SET_EXTFL_MODE -# define MZ_LONG_DOUBLE_API_IS_EXTERNAL -#endif - -# define REGISTER_POOR_MACHINE - -# define WINDOWS_UNICODE_SUPPORT -# define USE_ICONV_DLL -# define NO_MBTOWC_FUNCTIONS - -# ifdef _WIN64 -# define MZ_USE_JIT_X86_64 -# else -# define MZ_USE_JIT_I386 -# endif - -# define MZ_JIT_USE_WINDOWS_VIRTUAL_ALLOC - -# define FLAGS_ALREADY_SET - -#endif - - /******************** Windows with Cygwin ******************/ - /* See the "worksp" directory for more MSVC details. */ - -#if defined(__CYGWIN32__) - -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "i386-cygwin" - -# include "uconfig.h" - -# undef USE_ITIMER - -# define USE_MZ_CYGWIN_SETJMP -# define USE_MZ_SETJMP - -# define USE_CYGWIN_SO_SUFFIX - -# define USE_DIVIDE_MAKE_INFINITY - -# define DO_STACK_CHECK -# define WINDOWS_FIND_STACK_BOUNDS - -# define REGISTER_POOR_MACHINE - -# define MZ_USE_JIT_I386 - -# define FLAGS_ALREADY_SET - -#endif - - /************** Mac OS X ****************/ - -# if defined(OS_X) || defined(XONX) - -# if defined(XONX) -# define SPLS_MAC "darwin" -# elif TARGET_OS_IPHONE -# define SPLS_MAC "ios" -# else -# define SPLS_MAC "macosx" -# endif - -# if defined(__POWERPC__) -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "ppc-" SPLS_MAC -# elif defined(__arm__) -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "arm-" SPLS_MAC -# elif defined(__arm64__) -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "arm64-" SPLS_MAC -# elif defined(__x86_64__) -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "x86_64-" SPLS_MAC -# else -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "i386-" SPLS_MAC -# endif - -# include "uconfig.h" - -# define INIT_SYSLOG_LEVEL SCHEME_LOG_ERROR - -#ifndef XONX -# undef SYSTEM_TYPE_NAME -# define SYSTEM_TYPE_NAME "macosx" -#endif - -# ifndef MZ_USE_DETERMINSTIC_FUEL -# undef USE_ITIMER -# define USE_PTHREAD_THREAD_TIMER -# endif - -# define USE_MAP_ANON - -# define USE_IEEE_FP_PREDS -# define TRIG_ZERO_NEEDS_SIGN_CHECK - -# define USE_UNDERSCORE_SETJMP - -#ifndef XONX -# define MACOS_UNICODE_SUPPORT -#endif - -#ifndef OS_X -# define OS_X 1 -#endif - -#if defined(__arm__) -# define MZ_USE_JIT_ARM -#elif defined(__arm64__) -#elif defined(__POWERPC__) -# define MZ_USE_JIT_PPC -#else -# if defined(__x86_64__) -# define MZ_USE_JIT_X86_64 -# else -# define MZ_USE_JIT_I386 -# endif -# define ASM_DBLPREC_CONTROL_87 -# define MZ_TRY_EXTFLONUMS -#endif - -# define POW_HANDLES_CASES_CORRECTLY - -# define MZ_JIT_USE_MPROTECT - -# define FLAGS_ALREADY_SET - -#endif - - /************** Darwin x86 ****************/ - -# if defined(__APPLE__) && defined(__MACH__) && defined(__i386__) && !defined(OS_X) - -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "i386-darwin" - -# include "uconfig.h" - -# define USE_MAP_ANON - -# define USE_UNDERSCORE_SETJMP - -# define MZ_USE_JIT_I386 - -# define FLAGS_ALREADY_SET - -# endif - - /************ QNX *************/ - -#if defined(__QNX__) - -#if defined(__i386__) -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "i386-qnx" -#endif -# define ASSUME_FIXED_STACK_SIZE - -# include "uconfig.h" - -# define FIXED_STACK_SIZE 524288 - -# define FLAGS_ALREADY_SET - -#if defined(__i386__) -# define MZ_USE_JIT_I386 -# define MZ_JIT_USE_MPROTECT -#endif -#if defined(__x86_64__) -# define MZ_USE_JIT_X86_64 -# define MZ_JIT_USE_MPROTECT -# define MZ_USE_DWARF_LIBUNWIND -#endif - -#endif - - /************ Dragonfly *************/ - -#if defined(__DragonFly__) - -# if defined(__i386__) -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "i386-dragonfly" -# define REGISTER_POOR_MACHINE -# define MZ_USE_JIT_I386 -# define ASM_DBLPREC_CONTROL_87 -# define MZ_TRY_EXTFLONUMS -# elif defined(__amd64__) -# define SCHEME_PLATFORM_LIBRARY_SUBPATH "amd64-dragonfly" -# define REGISTER_POOR_MACHINE -# define MZ_USE_JIT_X86_64 -# define ASM_DBLPREC_CONTROL_87 -# define MZ_TRY_EXTFLONUMS -# else -# error Unported platform. -# endif - -/* pthreads always enabled via `configure', and - initial pthread's stack size doesn't use rlimit: */ -# define ASSUME_FIXED_STACK_SIZE -# define FIXED_STACK_SIZE 1048576 - -# include "uconfig.h" - -# define USE_UNDERSCORE_SETJMP - -# define USE_IEEE_FP_PREDS -# ifndef ASM_DBLPREC_CONTROL_87 -# define POW_HANDLES_INF_CORRECTLY -# endif - -# define MZ_JIT_USE_MPROTECT - -# define FLAGS_ALREADY_SET - -#endif - -/************** (END KNOWN ARCHITECTURE/SYSTEMS) ****************/ - - -/***** (BEGIN CONFIGURATION FLAG DESCRPTIONS AND DEFAULTS) ******/ - -#ifndef FLAGS_ALREADY_SET - -/* assume generic Unix: */ -#include "uconfig.h" - - /*********************/ - /* Operating System */ -/*********************/ - - /* SYSTEM_TYPE_NAME must be a string; this will be converted into - a symbol for the result of (system-type) */ - - /* SCHEME_PLATFORM_LIBRARY_SUBPATH must be a string; if it is - undefined, it is automatically generated into a file named - "schsys.h" into the same directory as .o files and #included - by string.c. This string is returned by (system-library-subpath) */ - - /*******************/ - /* Filesystem */ -/*******************/ - - /* UNIX_FILE_SYSTEM indicates that filenames are as in Unix, with - forward slash separators, ".." as the parent directory, "/" - as the root directory, and case-sensitivity */ - - /* DOS_FILE_SYSTEM indicates that filenames are as in DOS, with - slash or backward slash separators, ".." as the parent directory, - "X:\", "X:/", "\", or "/" as a root directory (for some letter X), - and case insensitivity */ - - /* USE_C_SYSLOG uses the C syslog library for logging. */ - - /* USE_WINDOWS_EVENT_LOG uses the Windows event log API for logging. */ - - /* INIT_SYSLOG_LEVEL sets the initial level for filtering messages - sent to syslog. It default to 0 (i.e., no events). */ - - /* USE_TRANSITIONAL_64_FILE_OPS uses lseek64, stat64, etc. for file - operations involving sizes (that can require 64-bit - arithmetic). */ - - /***********************/ - /* Ports */ -/***********************/ - -/* These are flags about the implementation of char-ready? for FILE*s - None of these flags are required, but char-ready? may return - spurious #ts if they are set up incorrectly. */ - - /* WINDOWS_FILE_HANDLES implements file access through the Windows - API (CreateFile(), ReadFile(), etc.) */ - - /***********************/ - /* Threads & Signals */ -/***********************/ - -/* These are flags about the implementation of system, process, etc. */ - - /* WINDOWS_PROCESSES uses Windows threads for various tasks. */ - - /* USE_ITIMER uses setitimer() to implement thread pre-emption (for - Racket-implemented threads). Define MZ_THREAD_QUANTUM_USEC to - set the base time in usec allocated to each thread. */ - - /* USE_WIN32_THREAD_TIMER uses a background Windows thread to implement - tread pre-emption. */ - - /* USE_PTHREAD_THREAD_TIMER uses a background pthread to implement - tread pre-emption. */ - - /* DONT_IGNORE_FPE_SIGNAL stops Racket from ignoring floating-point - exception signals. */ - - /* DONT_IGNORE_PIPE_SIGNAL stops Racket from ignoring SIGPIPE - signals. */ - - /* USE_UNDERSCORE_SETJMP uses _setjmp() instead of setjmp() to avoid - sigmal-mask work. */ - - /* FLUSH_SPARC_REGISTER_WINDOWS uses an assembly instruction for - flushing the Sparc register windows before copying the stack. */ - - /**********************/ - /* Inexact Arithmetic */ -/**********************/ - - /* FLOATING_POINT_IS_NOT_IEEE disables inexact->exact conversion via - parsing of IEEE-format bits. */ - - /* AVOID_INT_TO_FLOAT_TRUNCATION indicates that conversion from an - integer to a floating point type does not round-to-nearest when - precision is lost, even when the FP rounding mode is - round-to-nearest */ - - /* USE_SINGLE_FLOATS turns on support for single-precision - floating point numbers. Otherwise, floating point numbers - are always represented in double-precision. */ - - /* USE_SINGLE_FLOATS_AS_DEFAULT, when used with - USE_SINGLE_FLOATS, causes exact->inexact coercions to - use single-precision numbers as the result rather - than double-precision numbers. */ - - /* USE_INFINITY_FUNC uses infinity() to get the infinity - floating-point constant instead of using HUGE_VAL. */ - - /* USE_DIVIDE_MAKE_INFINITY creates +inf.0 by dvividing by zero - instead of using HUGE_VAL. */ - - /* USE_IEEE_FP_PREDS uses isinf() and isnan() to implement tests for - infinity and not-a-number. */ - - /* USE_OSF_FP_PREDS uses fp-class() and isnan() to implement tests for - infinity and not-a-number. */ - - /* USE_SCO_IEEE_FP_PREDS uses fpclass() and isnan() to implement tests for - infinity and not-a-number. */ - - /* USE_CARBON_FP_PREDS uses __isnand() and __isfinited() to implement tests - for infinity and not-a-number. */ - - /* USE_MSVC_FP_PREDS uses _fpclass() and _isnan() to implement tests - for infinity and not-a-number. */ - - /* DEFEAT_FP_COMP_OPTIMIZATION avoids a compiler optimization that - converts (a == a) to TRUE, even if `a' is floating-point. Used - only when USE_[SCO_]IEEE_FP_PREDS is not defined. */ - - /* C_COMPILER_USES_SSE indicates that the C compiler generates SSE2 - instructions for `double' arithmetic. This flag is turned on - automatically if __SSE2_MATH__ is defined (usually by gcc). */ - - /* MZ_LONG_DOUBLE enables extflonum support. */ - - /* MZ_TRY_EXTFLONUMS turns on MZ_LONG_DOUBLE if C_COMPILER_USES_SSE. */ - - /* ASM_DBLPREC_CONTROL_87 uses inline assembly to set Intel '387 - floating-point operations to double-precision instead of - extended-precision arithmetic. This definition is turned off if - C_COMPILER_USES_SSE, and ASM_EXTPREC_CONTROL_87 is turned on - instead if C_COMPILER_USES_SSE and MZ_LONG_DOUBLE. */ - - /* ASM_EXTPREC_CONTROL_87 uses inline assembly to set Intel '387 - floating-point operations to double-precision instead of - extended-precision arithmetic. */ - - /* MZ_NEED_SET_EXTFL_MODE causes JIT-generated extflonum instructions - to set the x87 control word to extended precision just before an - extflonum operation, and then set if back to double precision just - after. This is needed or Windows (where the default mode is double - precision, something about the x64 environment switches the mode - back if you try to change it permanently, and "longdouble.dll" - does the same switch for non-JITted operations). */ - - /* IGNORE_BY_BORLAND_CONTROL_87 turns off floating-point error for - Intel '387 with Borlad-style _control87. DONT_IGNORE_PIPE_SIGNAL - can be on or off. */ - - /* IGNORE_BY_MS_CONTROL_87 turns off floating-point error for Intel - '387 with Microsoft-style _control87. DONT_IGNORE_PIPE_SIGNAL can - be on or off. */ - - /* LINUX_CONTROL_387 controls the floating-point processor under i386 - Linux using __setfpucw(). libc 6.1 doesn't export __setfpucw() and - it doesn't matter; for Linux 2.0 and up, the default FP behavior - is the one we want. This flag might be needed for older versions - of Linux. */ - - /* FREEBSD_CONTROL_387 controls the floating-point processor under i386 - FreeBSD. As for Linux, this does not appear necessary anymore. */ - - /* APLHA_CONTROL_FP controls the floating-point processor for Alpha - OSF1 */ - - /* NAN_EQUALS_ANYTHING indicates that the compiler is broken and - equality comparisons with +nan.0 always return #t. Currently - used for MSVC++ */ - - /* ZERO_MINUS_ZERO_IS_POS_ZERO indicates that something (compiler? - machine? fp flags?) is broken so that 0.0 - 0.0 = 0.0 instead of - -0.0. This flag doesn't fix Racket completely, since (- 0.0) is - still 0.0, but at least it lets Racket read and print 0.0 and - -0.0 accurately. Currently used for HP/UX. */ - - /* NAN_LT_COMPARISON_WRONG indicates that +nan.0 is not handled correctly - by < or <=. Probably the compiler implements < as !>. */ - - /* USE_EXPLICT_FP_FORM_CHECK circumvents bugs in strtod() under Linux, - SunOS/Solaris, and HP/UX by explicit pre-checking the form of the - number and looking for values that are obviously +inf.0 or -inf.0 */ - - /* POW_HANDLES_CASES_CORRECTLY indicates that the pow() library procedure - handles all +/-inf.0, +/-0.0, or +nan.0 cases according to C99. This - might save time on redundant checking before Racket calls pow(). */ - - /* ATAN2_DOESNT_WORK_WITH_INFINITIES indicates that atan2(+/-inf, +/-inf) - is not the same as atan2(1, 1). */ - - /* ATAN2_DOESNT_WORK_WITH_NAN indicates that atan2(+nan.0, _) and - atan2(_, +nan.0) don't produce +nan.0. */ - - /* SQRT_NAN_IS_WRONG indicates that (sqrt +nan.0) must be forced to +nan.0 - (i.e., the C library function is bad). */ - - /* COMPUTE_NEG_INEXACT_TO_EXACT_AS_POS computes inexact->exact of some - negative inexact number x by computing the result for -x and negating - it. Use this if (inexact->exact -0.1) is wrong. */ - - /* TRIG_ZERO_NEEDS_SIGN_CHECK defines versions of tan, sin, atan, and - asin that preserve the sign of a zero argument. */ - - /* FMOD_CAN_RETURN_NEG_ZERO is fmod() on positive numbers can produce - a negative zero. */ - - /* FMOD_CAN_RETURN_POS_ZERO is fmod() on -0.0 can produce 0.0. */ - - /* LOG_ZERO_ISNT_NEG_INF defines a version of log that checks for an - inexact zero argument and return negative infinity. */ - - /* NEED_TO_DEFINE_MATHERR defines _matherr to quiet warnings from the - math library. */ - - /* SIN_COS_NEED_DEOPTIMIZE disables optimization for calls to sin() - and cos() (for MSVC) */ - - /****************************/ - /* Byte Order and long long */ -/****************************/ - - /* INT64_AS_LONG_LONG indicates that long long is not supported, but - _int64 is */ - - /* NO_LONG_LONG_TYPE indicates that long long is not supported */ - - /***********************/ - /* Stack Manipulations */ -/***********************/ - - /* DO_STACK_CHECK checks for stack overflow during execution. - Requires either UNIX_FIND_STACK_BOUNDS, USE_STACKAVAIL, - MACOS_FIND_STACK_BOUNDS, or ASSUME_FIXED_STACK_SIZE. */ - - /* UNIX_FIND_STACK_BOUNDS figures out the maximum stack position - on Unix systems, using getrlimit() and the GC_find_stack_base() - defined in the conservative garbage collector. But no more - than UNIX_STACK_MAXIMUM bytes, if defined, will be used. - USE_STACKAVIL uses stackavail() function for checking stack - overflow; works with Borland C++, maybe other compilers. - WINDOWS_FIND_STACK_BOUNDS figures out the maximum stack position - under Windows (uses GC_find_stack_base()) - MACOS_FIND_STACK_BOUNDS figures out the stack limit on the Mac. - LINUX_FIND_STACK_BASE figures out the stack base under Linux - by reading from /proc/self/maps and looking for "[stack]" - line. - ASSUME_FIXED_STACK_SIZE assumes that the main stack size is - always FIXED_STACK_SIZE. - PTHREAD_STACKSEG_FIND_STACK_BOUNDS finds stack bounds using - pthread_stackseg_np(). - Use only one of these if DO_STACK_CHECK is used, or none otherwise. */ - - /* FIXED_STACK_SIZE sets the stack size to when the - ASSUME_FIXED_STACK_SIZE stack-checking mode is on. */ - - /* STACK_SAFETY_MARGIN sets the number of bytes that should be - available on the stack for "safety" to . Used only if - DO_STACK_CHECK is used. STACK_SAFETY_MARGIN defaults to 50000 - for a 32-bit platform, twice as much for a 64-bit platform. */ - - /* UNIX_LIMIT_STACK limits stack usage to bytes. This may - be necessary to avoid GC-setup traversal over too much memory - (with GC flag HEURISTIC2?). */ - - /***********************/ - /* Dynamic Loading */ -/***********************/ - - /* UNIX_DYNAMIC_LOAD implements dynamic extensions under Unix - using dlopen(); you may have to add the -ldl flag in the LIBS - Makefile variable. The library doesn't exist under Linux without - ELF, so it won't work. If you get linker errors about dlopen(), etc., - this flag and the -ldl linker flag are the things to adjust. - SHL_DYNAMIC_LOAD implement HP/UX dynamic loading. - WINDOWS_DYNAMIC_LOAD implements dynamic extensions under Windows - (Thanks to Patrick Barta). - CODEFRAGMENT_DYNAMIC_LOAD implements dynamic extensions with - MacOS's Code Fragment Custodian (thanks to William Ng). - Use only one or none of these. */ - - /* UNDERSCORE_DYNLOAD_SYMBOL_PREFIX with UNIX_DYNAMIC_LOAD means that - an extra underscore ("_") must be placed in front of the name passed - to dlopen(). */ - - /* USE_DLOPEN_GLOBAL_BY_DEFAULT opens shared libraries in "global" - mode by default, instead of "local" mode. */ - - /* LINK_EXTENSIONS_BY_TABLE specifies that the Racket functions - used by an extension must be manually linked via a table of - function pointers. Windows dynamic linking uses this method. */ - - /* MZSCHEME_IS_CODEFRAGMENT exploits improved CFM linking when - Racket is itself a shared library instead of embedded in - an application */ - - /***********************/ - /* JIT */ -/***********************/ - - /* MZ_USE_JIT_I386 enables the JIT for x86 */ - - /* MZ_USE_JIT_X86_64 enables the JIT for x86_64 */ - - /* MZ_USE_JIT_PPC enables the JIT for PowerPC */ - - /* MZ_JIT_USE_MPROTECT uses mprotect on x86 platforms to make code - pages executable */ - - /* MZ_JIT_USE_WINDOWS_VIRTUAL_ALLOC uses VirtualAlloc to make - code pages executable. */ - - /*****************************/ - /* MacOS */ -/*****************************/ - - /* OS_X enables specific support for Mac OS, e.g. the location of the - prefs directory */ - - /***********************/ - /* Miscellaneous */ -/***********************/ - - /* USE_MAP_ANON indicates that mmap() should use BSD's MAP_ANON flag - rather than trying to open /dev/zero */ - - /* PREFER_MMAP_LARGE_BLOCKS indicates that mmap() should be called with - large block sizes as much as possible, because the actual allocated - size for small requests (on the order of the page size) is much - larger than the request. */ - - /* REGISTER_POOR_MACHINE guides a hand optimization that seems to - be work best one way for Sparc machines, and better the other - way for x86 machines. */ - - /* USE_LONG_LONG_FOR_BIGDIG indicates that `long long' is available - and 64 bits wide. (Don't use when `long' is 64 bits wide). */ - - /* MACOS_UNICODE_SUPPORT and WINDOWS_UNICODE_SUPPORT indicate that - platform-native functions should be used for string comparisons - in the default locale. */ - - /* USE_ICONV_DLL loads iconv.dll lazily for string conversion; no - headers necessary. */ - - /* NO_MBTOWC_FUNCTIONS indicates that locale-to-wchar conversion - functions are not available. */ - - /* NO_INLINE_KEYWORD indicates that the C compiler doesn't recognize - C's `inline' keyword. */ - - /* NO_USER_BREAK_HANDLER turns off handling of SIGINT, SIGTERM, and - SIGHUP in main.c */ - - /* NO_SIGTERM_HANDLER turns off handling of SIGTERM in main.c */ - - /* NO_SIGHUP_HANDLER turns off handling of SIGHUP in main.c */ - - /* NO_STRERROR_AVAILABLE means that strerror() is not available. */ - - /* USE_ON_EXIT_FOR_ATEXIT means that a SunOS4-style on_exit() - is available instead of atexit(). */ - - /* FFI_CALLBACK_NEED_INT_CLEAR indiates thet libffi callback results - that are smaller than an `int' should clear `int'-sized space - in the result area. */ - -#endif /* FLAGS_ALREADY_SET */ - -/****** (END CONFIGURATION FLAG DESCRPTIONS AND DEFAULTS) *******/ - -#endif /* FLAGS_ALREADY_SET */ diff --git a/racket/src/include/stypes.h b/racket/src/include/stypes.h deleted file mode 100644 index ad8fe49787..0000000000 --- a/racket/src/include/stypes.h +++ /dev/null @@ -1,301 +0,0 @@ - -enum { - - /* Compiled bytecode elements: */ - scheme_toplevel_type, /* 0 */ - scheme_static_toplevel_type, /* 1 */ - scheme_local_type, /* 2 */ - scheme_local_unbox_type, /* 3 */ - scheme_application_type, /* 4 */ - scheme_application2_type, /* 5 */ - scheme_application3_type, /* 6 */ - scheme_sequence_type, /* 7 */ - scheme_branch_type, /* 8 */ - scheme_lambda_type, /* 9 */ - scheme_let_value_type, /* 10 */ - scheme_let_void_type, /* 11 */ - scheme_letrec_type, /* 12 */ - scheme_let_one_type, /* 13 */ - scheme_with_cont_mark_type, /* 14 */ - - scheme_define_values_type, /* 15 */ - scheme_set_bang_type, /* 16 */ - scheme_boxenv_type, /* 17 */ - scheme_begin0_sequence_type, /* 18 */ - scheme_varref_form_type, /* 19 */ - scheme_apply_values_type, /* 20 */ - scheme_with_immed_mark_type, /* 21 */ - scheme_case_lambda_sequence_type, /* 22 */ - scheme_inline_variant_type, /* 23 */ - - _scheme_values_types_, /* 24 */ - /* All following types are values at run time */ - - scheme_linklet_type, /* 25 */ - - /* Replacements for some of the above as the - compiler's intermediate representation for - optimization: */ - scheme_ir_local_type, /* 26 */ - scheme_ir_lambda_type, /* 27 */ - scheme_ir_let_value_type, /* 28 */ - scheme_ir_let_header_type, /* 29 */ - scheme_ir_toplevel_type, /* 30 */ - - scheme_quote_compilation_type, /* used while writing, only */ - - /* Generated in the compiler front-end, but - registered in the prefix table instead of - used directly as an "expression": */ - scheme_variable_type, /* 32 */ - - _scheme_ir_values_types_, /* 33 */ - /* All of the following are literal values from the - perspective of the compiler */ - - scheme_linklet_bundle_type, /* 34 */ - scheme_instance_type, /* 35 */ - - /* procedure types */ - scheme_prim_type, /* 36 */ - scheme_closed_prim_type, /* 37 */ - scheme_closure_type, /* 38 */ - scheme_case_closure_type, /* 39 */ - scheme_cont_type, /* 40 */ - scheme_escaping_cont_type, /* 41 */ - scheme_proc_struct_type, /* 42 */ - scheme_native_closure_type, /* 43 */ - scheme_proc_chaperone_type, /* 44 */ - - scheme_chaperone_type, /* 45 */ - - /* structure type (plus one above for procs) */ - scheme_structure_type, /* 46 */ - - /* number types (must be together) */ - scheme_integer_type, /* 47 */ - scheme_bignum_type, /* 48 */ - scheme_rational_type, /* 49 */ - scheme_float_type, /* 50 */ - scheme_double_type, /* 51 */ - scheme_complex_type, /* 52 */ - - /* other eqv?-able values (must be with numbers) */ - scheme_char_type, /* 53 */ - scheme_long_double_type, /* 54 */ - - /* other values */ - scheme_char_string_type, /* 55 */ - scheme_byte_string_type, /* 56 */ - scheme_unix_path_type, /* 57 */ - scheme_windows_path_type, /* 58 */ - scheme_symbol_type, /* 59 */ - scheme_keyword_type, /* 60 */ - scheme_null_type, /* 61 */ - scheme_pair_type, /* 62 */ - scheme_mutable_pair_type, /* 63 */ - scheme_vector_type, /* 64 */ - scheme_inspector_type, /* 65 */ - scheme_input_port_type, /* 66 */ - scheme_output_port_type, /* 67 */ - scheme_eof_type, /* 68 */ - scheme_true_type, /* 69 */ - scheme_false_type, /* 70 */ - scheme_void_type, /* 71 */ - scheme_primitive_syntax_type, /* 72 */ - scheme_macro_type, /* 73 */ - scheme_box_type, /* 74 */ - scheme_thread_type, /* 75 */ - scheme_cont_mark_set_type, /* 76 */ - scheme_sema_type, /* 77 */ - - /* hash table types (must be together for hash? - * implementation */ - scheme_hash_table_type, /* 78 */ - scheme_hash_tree_type, /* 79 */ - scheme_eq_hash_tree_type, /* 80 */ - scheme_eqv_hash_tree_type, /* 81 */ - scheme_hash_tree_subtree_type, /* 82 */ - scheme_hash_tree_collision_type, /* 83 */ - scheme_hash_tree_indirection_type, /* 84 */ - scheme_bucket_type, /* 85 */ - scheme_bucket_table_type, /* 86 */ - - scheme_cpointer_type, /* 87 */ - scheme_prefix_type, /* 88 */ - scheme_weak_box_type, /* 89 */ - scheme_ephemeron_type, /* 90 */ - scheme_struct_type_type, /* 91 */ - scheme_set_macro_type, /* 92 */ - scheme_listener_type, /* 93 */ - scheme_env_type, /* 94 */ - scheme_startup_env_type, /* 95 */ - scheme_config_type, /* 96 */ - scheme_stx_type, /* 97 */ - scheme_will_executor_type, /* 98 */ - scheme_custodian_type, /* 99 */ - scheme_random_state_type, /* 100 */ - scheme_regexp_type, /* 101 */ - scheme_subprocess_type, /* 102 */ - scheme_eval_waiting_type, /* 103 */ - scheme_tail_call_waiting_type, /* 104 */ - scheme_undefined_type, /* 105 */ - scheme_struct_property_type, /* 106 */ - scheme_chaperone_property_type, /* 107 */ - scheme_multiple_values_type, /* 108 */ - scheme_placeholder_type, /* 109 */ - scheme_table_placeholder_type, /* 110 */ - scheme_svector_type, /* 111 */ - scheme_resolve_prefix_type, /* 112 */ - scheme_security_guard_type, /* 113 */ - scheme_indent_type, /* 114 */ - scheme_udp_type, /* 115 */ - scheme_udp_evt_type, /* 116 */ - scheme_tcp_accept_evt_type, /* 117 */ - scheme_id_macro_type, /* 118 */ - scheme_evt_set_type, /* 119 */ - scheme_wrap_evt_type, /* 120 */ - scheme_handle_evt_type, /* 121 */ - scheme_replace_evt_type, /* 122 */ - scheme_active_replace_evt_type, /* 123 */ - scheme_nack_guard_evt_type, /* 124 */ - scheme_semaphore_repost_type, /* 125 */ - scheme_channel_type, /* 126 */ - scheme_channel_put_type, /* 127 */ - scheme_thread_resume_type, /* 128 */ - scheme_thread_suspend_type, /* 129 */ - scheme_thread_dead_type, /* 130 */ - scheme_poll_evt_type, /* 131 */ - scheme_nack_evt_type, /* 132 */ - scheme_thread_set_type, /* 133 */ - scheme_string_converter_type, /* 134 */ - scheme_alarm_type, /* 135 */ - scheme_thread_recv_evt_type, /* 136 */ - scheme_thread_cell_type, /* 137 */ - scheme_channel_syncer_type, /* 138 */ - scheme_write_evt_type, /* 139 */ - scheme_always_evt_type, /* 140 */ - scheme_never_evt_type, /* 141 */ - scheme_progress_evt_type, /* 142 */ - scheme_place_dead_type, /* 143 */ - scheme_already_comp_type, /* 144 */ - scheme_readtable_type, /* 145 */ - scheme_thread_cell_values_type, /* 146 */ - scheme_global_ref_type, /* 147 */ - scheme_cont_mark_chain_type, /* 148 */ - scheme_raw_pair_type, /* 149 */ - scheme_prompt_type, /* 150 */ - scheme_prompt_tag_type, /* 151 */ - scheme_continuation_mark_key_type, /* 152 */ - scheme_delay_syntax_type, /* 153 */ - scheme_cust_box_type, /* 154 */ - scheme_logger_type, /* 155 */ - scheme_log_reader_type, /* 156 */ - scheme_noninline_proc_type, /* 157 */ - scheme_future_type, /* 158 */ - scheme_flvector_type, /* 159 */ - scheme_extflvector_type, /* 160 */ - scheme_fxvector_type, /* 161 */ - scheme_place_type, /* 162 */ - scheme_place_object_type, /* 163 */ - scheme_place_async_channel_type, /* 164 */ - scheme_place_bi_channel_type, /* 165 */ - scheme_once_used_type, /* 166 */ - scheme_serialized_symbol_type, /* 167 */ - scheme_serialized_keyword_type, /* 168 */ - scheme_serialized_structure_type, /* 169 */ - scheme_fsemaphore_type, /* 170 */ - scheme_serialized_tcp_fd_type, /* 171 */ - scheme_serialized_file_fd_type, /* 172 */ - scheme_port_closed_evt_type, /* 173 */ - scheme_proc_shape_type, /* 174 */ - scheme_struct_prop_proc_shape_type, /* 175 */ - scheme_struct_proc_shape_type, /* 176 */ - scheme_phantom_bytes_type, /* 177 */ - scheme_environment_variables_type, /* 178 */ - scheme_filesystem_change_evt_type, /* 179 */ - scheme_ctype_type, /* 180 */ - scheme_plumber_type, /* 181 */ - scheme_plumber_handle_type, /* 182 */ - scheme_deferred_expr_type, /* 183 */ - scheme_unquoted_printing_string_type, /* 184 */ - scheme_will_be_lambda_type, /* 185 */ - scheme_thunk_for_continue_type, /* 186 */ - -#ifdef MZTAG_REQUIRED - _scheme_last_normal_type_, /* 187 */ - - /* The remaining tags exist for GC tracing (in non-conservative - mode), but they are not needed for run-time tag tests */ - - scheme_rt_weak_array, /* 188 */ - - scheme_rt_comp_env, /* 189 */ - scheme_rt_constant_binding, /* 190 */ - scheme_rt_resolve_info, /* 191 */ - scheme_rt_unresolve_info, /* 192 */ - scheme_rt_optimize_info, /* 193 */ - scheme_rt_cont_mark, /* 194 */ - scheme_rt_saved_stack, /* 195 */ - scheme_rt_reply_item, /* 196 */ - scheme_rt_ir_lambda_info, /* 197 */ - scheme_rt_overflow, /* 198 */ - scheme_rt_overflow_jmp, /* 199 */ - scheme_rt_meta_cont, /* 200 */ - scheme_rt_dyn_wind_cell, /* 201 */ - scheme_rt_dyn_wind_info, /* 202 */ - scheme_rt_dyn_wind, /* 203 */ - scheme_rt_dup_check, /* 204 */ - scheme_rt_thread_memory, /* 205 */ - scheme_rt_input_file, /* 206 */ - scheme_rt_input_fd, /* 207 */ - scheme_rt_oskit_console_input, /* 208 */ - scheme_rt_tested_input_file, /* 209 */ - scheme_rt_tested_output_file, /* 210 */ - scheme_rt_indexed_string, /* 211 */ - scheme_rt_output_file, /* 212 */ - scheme_rt_pipe, /* 213 */ - scheme_rt_system_child, /* 214 */ - scheme_rt_tcp, /* 215 */ - scheme_rt_write_data, /* 216 */ - scheme_rt_tcp_select_info, /* 217 */ - scheme_rt_param_data, /* 218 */ - scheme_rt_will, /* 219 */ - scheme_rt_finalization, /* 220 */ - scheme_rt_finalizations, /* 221 */ - scheme_rt_cpp_object, /* 222 */ - scheme_rt_cpp_array_object, /* 223 */ - scheme_rt_stack_object, /* 224 */ - scheme_thread_hop_type, /* 225 */ - scheme_rt_srcloc, /* 226 */ - scheme_rt_evt, /* 227 */ - scheme_rt_syncing, /* 228 */ - scheme_rt_comp_prefix, /* 229 */ - scheme_rt_user_input, /* 230 */ - scheme_rt_user_output, /* 231 */ - scheme_rt_compact_port, /* 232 */ - scheme_rt_read_special_dw, /* 233 */ - scheme_rt_regwork, /* 234 */ - scheme_rt_rx_lazy_string, /* 235 */ - scheme_rt_buf_holder, /* 236 */ - scheme_rt_parameterization, /* 237 */ - scheme_rt_print_params, /* 238 */ - scheme_rt_read_params, /* 239 */ - scheme_rt_native_code, /* 240 */ - scheme_rt_native_code_plus_case, /* 241 */ - scheme_rt_jitter_data, /* 242 */ - scheme_rt_module_exports, /* 243 */ - scheme_rt_delay_load_info, /* 244 */ - scheme_rt_marshal_info, /* 245 */ - scheme_rt_unmarshal_info, /* 246 */ - scheme_rt_runstack, /* 247 */ - scheme_rt_sfs_info, /* 248 */ - scheme_rt_validate_clearing, /* 249 */ - scheme_rt_lightweight_cont, /* 250 */ - scheme_rt_export_info, /* 251 */ - scheme_rt_cont_jmp, /* 252 */ - scheme_rt_letrec_check_frame, /* 253 */ -#endif - - _scheme_last_type_ -}; diff --git a/racket/src/include/uconfig.h b/racket/src/include/uconfig.h deleted file mode 100644 index 42145bdc9d..0000000000 --- a/racket/src/include/uconfig.h +++ /dev/null @@ -1,24 +0,0 @@ - -/* Standard settings for Unix platforms. */ -/* Used by sconfig.h for known architectures. */ - -#define SYSTEM_TYPE_NAME "unix" -#define UNIX_FILE_SYSTEM - -#define USE_C_SYSLOG - -#define DO_STACK_CHECK -#ifndef ASSUME_FIXED_STACK_SIZE -# define UNIX_FIND_STACK_BOUNDS -#endif -#define UNIX_STACK_MAXIMUM 8388608 - -#define UNIX_DYNAMIC_LOAD - -#ifndef MZ_USE_DETERMINSTIC_FUEL -# if defined(MZ_USE_PLACES) || defined(USE_PTHREAD_INSTEAD_OF_ITIMER) -# define USE_PTHREAD_THREAD_TIMER -# else -# define USE_ITIMER -# endif -#endif