all noncommented rtl ops are now encoded
[aschm:aschm.git] / module / native / vm / c-callers.scm
1 (define-module (native vm c-callers)
2   #:use-module (native vm vm)
3   #:export (*c-stubs* make-table-file))
4
5 (define *c-stubs* '())
6 (define nc 0)
7 (define-syntax-rule (define-c-caller _ name _ c-name args ...)
8   (begin
9     (set! *c-stubs*
10           (cons (let ((i nc))
11                   (lambda (ar stream) 
12                     (format stream "~a[~a] = ~a;~%" 
13                             ar i 'c-name)))
14                 *c-stubs*))
15     (define name 
16       (let ((i nc))
17         (lambda (reg) (get-C i reg))))
18     (set! nc (+ nc 1))
19     (export name)))
20
21 (define (make-table-file fnm)
22   (define s (open-file fnm "w"))
23   (for-each 
24    (lambda (f)
25      (f 'c_call_table s))
26    *c-stubs*)
27   (close-port s))
28
29 (define-c-caller :scm scm_cons           :C scm_cons)
30 (define-c-caller :scm scm_cell           :C scm_cell)
31 (define-c-caller :scm scm_words          :C scm_words)
32 (define-c-caller :scm scm_vector         :C g_make_vector)
33 (define-c-caller :scm scm_wrong_argument :C g_wrong_argument)
34 (define-c-caller :scm scm_car_error      :C g_car_error)
35 (define-c-caller :scm scm_cdr_error      :C g_cdr_error)
36 (define-c-caller :scm scm_setcar_error   :C g_setcar_error)
37 (define-c-caller :scm scm_setcdr_error   :C g_setcdr_error)
38 (define-c-caller :scm scm_sum            :C scm_sum)
39 (define-c-caller :scm scm_num_eq_p       :C scm_num_eq_p)
40 (define-c-caller :scm scm_less_p         :C scm_less_p)
41 (define-c-caller :scm scm_leq_p          :C scm_leq_p)
42 (define-c-caller :scm scm_gr_p           :C scm_gr_p)
43 (define-c-caller :scm scm_geq_p          :C scm_geq_p)
44 (define-c-caller :scm scm_difference     :C scm_difference)
45 (define-c-caller :scm scm_product        :C scm_product)
46 (define-c-caller :scm scm_divide         :C scm_divide)
47 (define-c-caller :scm scm_quotient       :C scm_quotient)
48 (define-c-caller :scm scm_remainder      :C scm_remainder)
49 (define-c-caller :scm scm_modulo         :C scm_modulo)
50 (define-c-caller :scm scm_ash            :C scm_ash)
51 (define-c-caller :scm scm_logand         :C scm_logand)
52 (define-c-caller :scm scm_logior         :C scm_logior)
53 (define-c-caller :scm scm_logxor         :C scm_logxor)
54 (define-c-caller :scm scm_async_click    :C scm_async_click)
55 (define-c-caller :scm c_not_a_var        :C g_not_a_var)
56 (define-c-caller :scm c_not_a_var_b      :C g_not_a_var_b)
57 (define-c-caller :scm c_not_a_var_s      :C g_not_a_var_s)
58 (define-c-caller :scm c_var_not_bound    :C g_var_not_bound)
59 (define-c-caller :scm g_toplevel_lookup  :C g_toplevel_lookup)
60 (define-c-caller :scm scm_eqv_p          :C scm_eqv_p)
61 (define-c-caller :scm scm_equal_p        :C scm_equal_p)
62 (define-c-caller :scm scm_symbol_to_keyword :C scm_symbol_to_keyword)
63 (define-c-caller :scm scm_string_to_symbol  :C scm_string_to_symbol)
64 (define-c-caller :scm scm_setjmp         :C setjmp)
65 (define-c-caller :scm scm_prompt         :C g_prompt)
66 (define-c-caller :scm scm_get_program    :C g_get_program)
67 (define-c-caller :scm err_no_jitted_code :C g_no_jitted_code)
68 (define-c-caller :scm g_truncate_err     :C g_no_jitted_code)
69 (define-c-caller :scm scm_call_back_to_vm   :C scm_call_back_to_vm)
70 (define-c-caller :scm scm_mvcall_back_to_vm :C scm_mvcall_back_to_vm)
71 (define-c-caller :scm g_zero_in_values   :C g_zero_in_values)
72 (define-c-caller :scm g_vm_error_stack_overflow :C g_vm_error_stack_overflow)
73 (define-c-caller :scm g_box_not_bounded  :C g_box_not_bounded)
74 (define-c-caller :scm g_abort            :C g_abort)
75 (define-c-caller :scm g_non_not_nonimmediate :C g_non_not_nonimmediate)
76 (define-c-caller :scm g_not_scm_aligned  :C g_not_scm_aligned)
77 (define-c-caller :scm scm_module_lookup  :C scm_module_lookup)
78 (define-c-caller :scm scm_resolve_module :C scm_resolve_module)
79 (define-c-caller :scm scm_module_public_interface
80   :C scm_module_public_interface)
81 (define-c-caller :scm scm_define         :C scm_define)
82 (define-c-caller :scm g_toplevel_resolve :C g_toplevel_resolve)
83 (define-c-caller :scm g_moduleref_resolve :C g_moduleref_resolve)
84 (define-c-caller :scm scm_dynstack_push_dynwind  :C scm_dynstack_push_dynwind)
85 (define-c-caller :scm scm_dynstack_pop   :C scm_dynstack_pop)
86 (define-c-caller :scm scm_dynstack_push_fluids_shuffled 
87   :C scm_dynstack_push_fluids_shuffled)
88 (define-c-caller :scm scm_dynstack_unwind_fluids  
89   :C scm_dynstack_unwind_fluids)
90 (define-c-caller :scm g_fluid_ref     :C g_fluid_ref)
91 (define-c-caller :scm g_fluid_set     :C g_fluid_set)
92 (define-c-caller :scm g_string_length :C g_string_length)
93 (define-c-caller :scm g_string_ref    :C g_string_ref)
94 (define-c-caller :scm scm_string_to_number :C scm_string_to_number)
95 (define-c-caller :scm scm_vector_length :C scm_vector_length)
96 (define-c-caller :scm scm_vector_ref  :C scm_vector_ref)
97 (define-c-caller :scm scm_vector_set_x :C scm_vector_set_x)
98 (define-c-caller :scm g_struct_error  :C g_struct_error)
99 (define-c-caller :scm g_make_struct   :C g_make_struct)
100 (define-c-caller :scm scm_struct_ref  :C scm_struct_ref)
101 (define-c-caller :scm scm_struct_set_x  :C scm_struct_set_x)
102 (define-c-caller :scm scm_class_of    :C scm_class_of)
103 (define-c-caller :scm scm_from_contiguous_typed_array 
104   :C scm_from_contiguous_typed_array)
105 (define-c-caller :scm scm_make_typed_array :C scm_make_typed_array)
106
107 (define-c-caller :scm scm_bytevector_u8_ref :C scm_bytevector_u8_ref)
108 (define-c-caller :scm scm_bytevector_s8_ref :C scm_bytevector_s8_ref)
109 (define-c-caller :scm scm_bytevector_u16_ref :C scm_bytevector_u16_ref)
110 (define-c-caller :scm scm_bytevector_s16_ref :C scm_bytevector_s16_ref)
111 (define-c-caller :scm scm_bytevector_u32_ref :C scm_bytevector_u32_ref)
112 (define-c-caller :scm scm_bytevector_s32_ref :C scm_bytevector_s32_ref)
113 (define-c-caller :scm scm_bytevector_u64_native_ref :C scm_bytevector_u64_native_ref)
114 (define-c-caller :scm scm_bytevector_s64_native_ref :C scm_bytevector_s64_native_ref)
115 (define-c-caller :scm scm_bytevector_f32_native_ref :C scm_bytevector_f32_native_ref)
116
117 (define-c-caller :scm scm_bytevector_f64_native_ref :C scm_bytevector_f64_native_ref)
118
119 (define-c-caller :scm scm_bytevector_u8_set_x :C scm_bytevector_u8_set_x)
120 (define-c-caller :scm scm_bytevector_s8_set_x :C scm_bytevector_s8_set_x)
121 (define-c-caller :scm scm_bytevector_u16_set_x :C scm_bytevector_u16_set_x)
122 (define-c-caller :scm scm_bytevector_s16_set_x :C scm_bytevector_s16_set_x)
123 (define-c-caller :scm scm_bytevector_u32_set_x :C scm_bytevector_u32_set_x)
124 (define-c-caller :scm scm_bytevector_s32_set_x :C scm_bytevector_s32_set_x)
125 (define-c-caller :scm scm_bytevector_u64_native_set_x :C scm_bytevector_u64_native_set_x)
126 (define-c-caller :scm scm_bytevector_s64_native_set_x :C scm_bytevector_s64_native_set_x)
127 (define-c-caller :scm scm_bytevector_f32_native_set_x :C scm_bytevector_f32_native_set_x)
128
129 (define-c-caller :scm scm_bytevector_f64_native_set_x :C scm_bytevector_f64_native_set_x)
130
131
132
133
134
135