9 #ifndef CYCLONE_RUNTIME_H 10 #define CYCLONE_RUNTIME_H 63 #define Cyc_check_num_args(data, fnc_name, num_args, args) { \ 64 object l = Cyc_length(data, args); \ 65 if (num_args > obj_obj2int(l)) { \ 67 snprintf(buf, 127, "Expected %d arguments to %s but received %ld", \ 68 num_args, fnc_name, obj_obj2int(l)); \ 69 Cyc_rt_raise_msg(data, buf); \ 73 #define Cyc_verify_mutable(data, obj) { \ 74 if (immutable(obj)) Cyc_immutable_obj_error(data, obj); } 75 #define Cyc_verify_immutable(data, obj) { \ 76 if (boolean_f == Cyc_is_immutable(obj)) Cyc_mutable_obj_error(data, obj); } 77 #define Cyc_check_type(data, fnc_test, tag, obj) { \ 78 if ((boolean_f == fnc_test(obj))) Cyc_invalid_type_error(data, tag, obj); } 79 #define Cyc_check_type2(data, fnc_test, tag, obj) { \ 80 if ((boolean_f == fnc_test(data, obj))) Cyc_invalid_type_error(data, tag, obj); } 82 #define Cyc_check_pair_or_null(d,obj) { if (obj != NULL) { Cyc_check_pair(d,obj); }} 83 #define Cyc_check_pair(d,obj) Cyc_check_type(d,Cyc_is_pair, pair_tag, obj) 84 #define Cyc_check_proc(d,obj) Cyc_check_type2(d,Cyc_is_procedure, closureN_tag, obj) 85 #define Cyc_check_num(d,obj) Cyc_check_type(d,Cyc_is_number, integer_tag, obj) 86 #define Cyc_check_fixnum(d,obj) Cyc_check_type(d,Cyc_is_fixnum, integer_tag, obj) 87 #define Cyc_check_int(d,obj) Cyc_check_type(d,Cyc_is_integer, integer_tag, obj) 88 #define Cyc_check_str(d,obj) Cyc_check_type(d,Cyc_is_string, string_tag, obj) 89 #define Cyc_check_sym(d,obj) Cyc_check_type(d,Cyc_is_symbol, symbol_tag, obj) 90 #define Cyc_check_vec(d,obj) Cyc_check_type(d,Cyc_is_vector, vector_tag, obj) 91 #define Cyc_check_bvec(d,obj) Cyc_check_type(d,Cyc_is_bytevector, bytevector_tag, obj) 92 #define Cyc_check_port(d,obj) Cyc_check_type(d,Cyc_is_port, port_tag, obj) 93 #define Cyc_check_mutex(d,obj) Cyc_check_type(d,Cyc_is_mutex, mutex_tag, obj) 94 #define Cyc_check_cond_var(d,obj) Cyc_check_type(d,Cyc_is_cond_var, cond_var_tag, obj) 95 #define Cyc_check_atomic(d,obj) Cyc_check_type(d,Cyc_is_atomic, atomic_tag, obj) 96 #define Cyc_check_opaque(d,obj) Cyc_check_type(d,Cyc_is_opaque, c_opaque_tag, obj) 114 #define global_set(glo,value) Cyc_global_set(data, NULL, (object *)&glo, value) 115 #define global_set_id(id,glo,value) Cyc_global_set(data, id, (object *)&glo, value) 116 object Cyc_global_set(
void *thd,
object sym,
object * glo,
object value);
118 #define global_set_cps(thd,k,glo,value) Cyc_global_set_cps(thd, k, NULL, (object *)&glo, value) 119 #define global_set_cps_id(thd,k,id,glo,value) Cyc_global_set_cps(thd, k, id, (object *)&glo, value) 120 object Cyc_global_set_cps(
void *thd,
object cont,
object sym,
object * glo,
object value);
136 #define load_varargs(var, arg_var, count) \ 137 list var = (count > 0) ? alloca(sizeof(pair_type)*count) : NULL; \ 143 va_start(va, arg_var); \ 144 for (i = 0; i < count; i++) { \ 146 tmp = va_arg(va, object); \ 150 var[i].hdr.mark = gc_color_red; \ 151 var[i].hdr.grayed = 0; \ 152 var[i].hdr.immutable = 0; \ 153 var[i].tag = pair_tag; \ 154 var[i].pair_car = tmp; \ 155 var[i].pair_cdr = (i == (count-1)) ? NULL : &var[i + 1]; \ 168 object apply(
void *data,
object cont,
object func,
object args);
170 void dispatch_apply_va(
void *data,
int argc,
object clo,
object cont,
object func, ...);
171 object apply_va(
void *data,
object cont,
int argc,
object func, ...);
175 object cont,
object args);
196 object Cyc_substring(
void *data,
object cont,
object str,
object start,
199 object Cyc_string_set(
void *data,
object str,
object k,
object chr);
241 object Cyc_display(
void *data,
object, FILE * port);
247 object Cyc_write(
void *data,
object, FILE * port);
250 object Cyc_write_va(
void *data,
int argc,
object x, ...);
285 #define return_inexact_double_op_no_cps(data, ptr, OP, z) \ 287 Cyc_check_num(data, z); \ 288 if (obj_is_int(z)) { \ 289 unboxed = OP(obj_obj2int(z)); \ 290 } else if (type_of(z) == integer_tag) { \ 291 unboxed = OP(((integer_type *)z)->value); \ 292 } else if (type_of(z) == bignum_tag) { \ 293 unboxed = OP(mp_get_double(&bignum_value(z))); \ 295 unboxed = OP(((double_type *)z)->value); \ 297 assign_double(ptr, unboxed); \ 300 #define return_inexact_double_op(data, cont, OP, z) \ 301 make_double(d, 0.0); \ 302 Cyc_check_num(data, z); \ 303 if (obj_is_int(z)) { \ 304 d.value = OP(obj_obj2int(z)); \ 305 } else if (type_of(z) == integer_tag) { \ 306 d.value = OP(((integer_type *)z)->value); \ 307 } else if (type_of(z) == bignum_tag) { \ 308 d.value = OP(mp_get_double(&bignum_value(z))); \ 310 d.value = OP(((double_type *)z)->value); \ 312 return_closcall1(data, cont, &d) 314 #define return_inexact_double_or_cplx_op_no_cps(data, ptr, OP, CPLX_OP, z) \ 316 Cyc_check_num(data, z); \ 317 if (obj_is_int(z)) { \ 318 unboxed = OP(obj_obj2int(z)); \ 319 } else if (type_of(z) == integer_tag) { \ 320 unboxed = OP(((integer_type *)z)->value); \ 321 } else if (type_of(z) == bignum_tag) { \ 322 unboxed = OP(mp_get_double(&bignum_value(z))); \ 323 } else if (type_of(z) == complex_num_tag) { \ 324 double complex unboxed = CPLX_OP(complex_num_value(z)); \ 325 assign_complex_num(ptr, unboxed); \ 328 unboxed = OP(((double_type *)z)->value); \ 330 assign_double(ptr, unboxed); \ 333 #define return_inexact_double_or_cplx_op(data, cont, OP, CPLX_OP, z) \ 334 make_double(d, 0.0); \ 335 Cyc_check_num(data, z); \ 336 if (obj_is_int(z)) { \ 337 d.value = OP(obj_obj2int(z)); \ 338 } else if (type_of(z) == integer_tag) { \ 339 d.value = OP(((integer_type *)z)->value); \ 340 } else if (type_of(z) == bignum_tag) { \ 341 d.value = OP(mp_get_double(&bignum_value(z))); \ 342 } else if (type_of(z) == complex_num_tag) { \ 343 complex_num_type cn; \ 344 double complex unboxed = CPLX_OP(complex_num_value(z)); \ 345 assign_complex_num((&cn), unboxed); \ 346 return_closcall1(data, cont, &cn); \ 348 d.value = OP(((double_type *)z)->value); \ 350 return_closcall1(data, cont, &d) 352 #define return_exact_double_op(data, cont, OP, z) \ 354 Cyc_check_num(data, z); \ 355 if (obj_is_int(z)) { \ 356 i = obj_obj2int(z); \ 357 } else if (type_of(z) == integer_tag) { \ 358 i = (int)OP(((integer_type *)z)->value); \ 359 } else if (type_of(z) == bignum_tag) { \ 360 return_closcall1(data, cont, z); \ 362 i = (int)OP(((double_type *)z)->value); \ 364 return_closcall1(data, cont, obj_int2obj(i)) 366 #define return_exact_double_op_no_cps(data, ptr, OP, z) \ 368 Cyc_check_num(data, z); \ 369 if (obj_is_int(z)) { \ 370 i = obj_obj2int(z); \ 371 } else if (type_of(z) == integer_tag) { \ 372 i = (int)OP(((integer_type *)z)->value); \ 373 } else if (type_of(z) == bignum_tag) { \ 376 i = (int)OP(((double_type *)z)->value); \ 378 return obj_int2obj(i); 380 #define unbox_number(n) \ 381 ((obj_is_int(n) ? obj_obj2int(n) : \ 382 ((type_of(n) == integer_tag) ? \ 383 ((integer_type *)n)->value : \ 384 ((double_type *)n)->value))) 386 object Cyc_num_eq(
void *,
object cont,
int argc,
object n, ...);
387 object Cyc_num_gt(
void *,
object cont,
int argc,
object n, ...);
388 object Cyc_num_lt(
void *,
object cont,
int argc,
object n, ...);
389 object Cyc_num_gte(
void *,
object cont,
int argc,
object n, ...);
390 object Cyc_num_lte(
void *,
object cont,
int argc,
object n, ...);
402 int (fn_op(
void *,
object,
object)),
object n,
404 void Cyc_expt(
void *data,
object cont,
object x,
object y);
405 void Cyc_remainder(
void *data,
object cont,
object num1,
object num2);
412 object Cyc_sum(
void *data,
object cont,
int argc,
object n, ...);
413 object Cyc_sub(
void *data,
object cont,
int argc,
object n, ...);
414 object Cyc_mul(
void *data,
object cont,
int argc,
object n, ...);
415 object Cyc_div(
void *data,
object cont,
int argc,
object n, ...);
417 #define Cyc_if(c,t,e) ((boolean_f != c) ? (t) : (e)) 418 object Cyc_fast_sum(
void *data,
object ptr,
object x,
object y);
419 object Cyc_fast_sub(
void *data,
object ptr,
object x,
object y);
420 object Cyc_fast_mul(
void *data,
object ptr,
object x,
object y);
421 object Cyc_fast_div(
void *data,
object ptr,
object x,
object y);
424 object Cyc_fast_list_4(
object ptr,
object a1,
object a2,
object a3,
object a4);
427 object Cyc_fast_vector_4(
object ptr,
object a1,
object a2,
object a3,
object a4);
428 object Cyc_fast_vector_5(
object ptr,
object a1,
object a2,
object a3,
object a4,
object a5);
430 object Cyc_bit_set(
void *data,
object n1,
object n2);
433 int default_no_args,
int default_one_arg,
object n,
446 object Cyc_eqv(
object x,
object y);
447 #define Cyc_eq(x, y) (make_boolean(x == y)) 448 int equal(
object,
object);
449 object equalp(
object,
object);
453 #define Cyc_is_boolean(o) (make_boolean(o == boolean_f || o == boolean_t)) 454 #define Cyc_is_pair(o) ((is_object_type(o) && ((list) o)->tag == pair_tag) ? boolean_t : boolean_f) 455 #define Cyc_is_null(o) (make_boolean(o == NULL)) 460 #define Cyc_is_fixnum(o) (make_boolean(obj_is_int(o))) 462 #define Cyc_is_bignum(o) (make_boolean(is_object_type(o) && ((list) o)->tag == bignum_tag)) 464 #define Cyc_is_complex(o) (make_boolean(is_object_type(o) && ((list) o)->tag == complex_num_tag)) 473 #define Cyc_is_vector(o) (make_boolean(is_object_type(o) && ((list) o)->tag == vector_tag)) 474 #define Cyc_is_bytevector(o) (make_boolean(is_object_type(o) && ((list) o)->tag == bytevector_tag)) 475 #define Cyc_is_port(o) (make_boolean(is_object_type(o) && ((list) o)->tag == port_tag)) 476 #define Cyc_is_mutex(o) (make_boolean(is_object_type(o) && ((list) o)->tag == mutex_tag)) 477 #define Cyc_is_atomic(o) (make_boolean(is_object_type(o) && ((list) o)->tag == atomic_tag)) 478 #define Cyc_is_cond_var(o) (make_boolean(is_object_type(o) && ((list) o)->tag == cond_var_tag)) 479 #define Cyc_is_symbol(o) (make_boolean(is_object_type(o) && ((list) o)->tag == symbol_tag)) 480 #define Cyc_is_string(o) (make_boolean(is_object_type(o) && ((list) o)->tag == string_tag)) 482 #define Cyc_is_char(o) (make_boolean(obj_is_char(o))) 488 #define Cyc_is_macro(o) (make_boolean(is_object_type(o) && ((list) o)->tag == macro_tag)) 489 #define Cyc_is_eof_object(o) (make_boolean(is_object_type(o) && ((list) o)->tag == eof_tag)) 490 #define Cyc_is_void_object(o) (make_boolean(is_object_type(o) && ((list) o)->tag == void_tag)) 491 #define Cyc_is_cvar(o) (make_boolean(is_object_type(o) && ((list) o)->tag == cvar_tag)) 492 #define Cyc_is_opaque(o) (make_boolean(is_object_type(o) && ((list) o)->tag == c_opaque_tag)) 503 #define Cyc_vector_ref_unsafe(d, v, k) \ 504 ((vector) v)->elements[obj_obj2int(k)] 509 object Cyc_make_vector(
void *data,
object cont,
int argc,
object len, ...);
518 object Cyc_bytevector(
void *data,
object cont,
int argc,
object bval, ...);
526 object Cyc_utf82string(
void *data,
object cont,
object bv,
object start,
528 object Cyc_string2utf8(
void *data,
object cont,
object str,
object start,
544 object __halt(
object obj);
571 object copy2heap(
void *data,
object obj);
587 #define Cyc_st_add(data, frame) \ 589 gc_thread_data *thd = (gc_thread_data *) data; \ 591 if ((char *)frame != thd->stack_prev_frame) { \ 592 thd->stack_prev_frame = frame; \ 593 thd->stack_traces[thd->stack_trace_idx] = frame; \ 594 thd->stack_trace_idx = (thd->stack_trace_idx + 1) % MAX_STACK_TRACES; \ 754 #define __glo_eval_91from_91c_scheme_eval Cyc_glo_eval_from_c 755 #define __glo_call_95cc_scheme_base Cyc_glo_call_cc 802 void add_global(
const char *identifier,
object * glo);
814 #define CYC_UTF8_ACCEPT 0 817 #define CYC_UTF8_REJECT 1 822 #define Cyc_utf8_encode_char(dest, dest_size, char_value) \ 823 Cyc_utf8_encode(dest, dest_size, &char_value, 1) 838 static inline object Cyc_car(
void *data,
object lis)
844 static inline object Cyc_cdr(
void *data,
object lis)
850 #define Cyc_car_unsafe(d, lis) car(lis) 851 #define Cyc_cdr_unsafe(d, lis) cdr(lis) 863 object Cyc_list(
void *data,
int argc,
object cont, ...);
865 object memqp(
void *data,
object x,
list l);
const object primitive_cdaar
Definition: runtime.c:6496
object Cyc_num_fast_eq_op(void *data, object x, object y)
object Cyc_write_char(void *data, object c, object port)
Definition: runtime.c:1333
const object primitive_substring
Definition: runtime.c:6520
A closed-over function with no variables.
Definition: types.h:1384
object Cyc_write_bytevector(void *data, object bvec, object port, object start, object end)
Definition: runtime.c:1365
uint32_t Cyc_utf8_validate_stream(uint32_t *state, char *str, size_t len)
Use this when validating from a stream, as it may be that the stream stopped in the middle of a codep...
Definition: runtime.c:7992
object Cyc_vector_ref(void *d, object v, object k)
Definition: runtime.c:2245
object copy2heap(void *data, object obj)
Copy given object to the heap, if it is from the stack. This function is intended to be called direct...
Definition: runtime.c:6762
object Cyc_bit_set(void *data, object n1, object n2)
Definition: runtime.c:6822
object Cyc_write(void *data, object, FILE *port)
Definition: runtime.c:1326
char ** get_env_variables()
Definition: runtime.c:204
object Cyc_vector_set_cps(void *d, object cont, object v, object k, object obj)
Definition: runtime.c:2199
const object primitive_Cyc_91write_91char
Definition: runtime.c:6580
const object primitive_caar
Definition: runtime.c:6488
object Cyc_get_global_variables()
Definition: runtime.c:847
void Cyc_io_read_token(void *data, object cont, object port)
Read next token from the input port.
Definition: runtime.c:7749
port_type Cyc_io_open_input_file(void *data, object str)
Definition: runtime.c:4488
const object primitive_memq
Definition: runtime.c:6477
The port object type.
Definition: types.h:1091
object Cyc_char_gte_op(void *data, object a, object b)
const object primitive_command_91line_91arguments
Definition: runtime.c:6527
const object primitive_open_91input_91file
Definition: runtime.c:6566
object Cyc_string_append(void *data, object cont, int argc, object str1,...)
Definition: runtime.c:2692
const object primitive_cdadar
Definition: runtime.c:6510
const object primitive_port_127
Definition: runtime.c:6562
object memberp(void *data, object x, list l)
Definition: runtime.c:1399
const object primitive_cdddr
Definition: runtime.c:6499
void Cyc_immutable_obj_error(void *data, object obj)
Definition: runtime.c:68
const object quote_void
Definition: runtime.c:390
object Cyc_length_unsafe(void *d, object l)
Definition: runtime.c:2299
object Cyc_fast_mul(void *data, object ptr, object x, object y)
Definition: runtime.c:3888
object add_symbol(symbol_type *psym)
Definition: runtime.c:447
port_type * Cyc_io_open_output_string(void *data)
Definition: mstreams.c:77
void Cyc_expt(void *data, object cont, object x, object y)
Definition: runtime.c:4306
object Cyc_string_ref(void *data, object str, object k)
Definition: runtime.c:2805
object Cyc_string_set(void *data, object str, object k, object chr)
Definition: runtime.c:2711
port_type Cyc_stdout(void)
Definition: runtime.c:4444
const object primitive_Cyc_91macro_127
Definition: runtime.c:6560
object Cyc_global_set_cps(void *thd, object cont, object sym, object *glo, object value)
Definition: runtime.c:359
object Cyc_set_car_cps(void *, object cont, object l, object val)
Definition: runtime.c:2139
The pair (cons) type.
Definition: types.h:1239
double MRG32k3a(double seed)
Definition: runtime.c:6865
const object primitive_cdaddr
Definition: runtime.c:6511
object Cyc_write_u8(void *data, object c, object port)
Definition: runtime.c:1350
const object primitive_Cyc_91read_91line
Definition: runtime.c:6579
const object primitive_caddar
Definition: runtime.c:6506
const object primitive_string_91length
Definition: runtime.c:6519
object register_library(const char *name)
Definition: runtime.c:485
object Cyc_fast_sum(void *data, object ptr, object x, object y)
Definition: runtime.c:3687
const object primitive_symbol_127
Definition: runtime.c:6565
const object primitive_Cyc_91flush_91output_91port
Definition: runtime.c:6573
const object Cyc_EOF
Definition: runtime.c:196
object equalp(object, object)
Definition: runtime.c:1569
object Cyc_is_immutable(object obj)
Definition: runtime.c:2056
int Cyc_num_lte_op(void *, object x, object y)
const object primitive_procedure_127
Definition: runtime.c:6558
const object primitive_integer_127
Definition: runtime.c:6556
object Cyc_fast_vector_3(object ptr, object a1, object a2, object a3)
Definition: runtime.c:1505
void Cyc_int2bignum(int n, mp_int *bn)
Definition: runtime.c:1673
void dispatch_display_va(void *data, int argc, object clo, object cont, object x,...)
Definition: runtime.c:970
void Cyc_apply(void *data, int argc, closure cont, object prim,...)
Definition: runtime.c:5670
const object primitive_cdaadr
Definition: runtime.c:6509
object Cyc_io_close_output_port(void *data, object port)
Definition: runtime.c:4517
object Cyc_glo_call_cc
Definition: runtime.c:644
const object primitive_open_91output_91file
Definition: runtime.c:6567
object Cyc_io_read_char(void *data, object cont, object port)
Definition: runtime.c:7646
const object primitive_cadaar
Definition: runtime.c:6504
const object primitive_cddaar
Definition: runtime.c:6512
const object primitive_cell
Definition: runtime.c:6471
object Cyc_char2integer(object chr)
Definition: runtime.c:3488
const object primitive_caaar
Definition: runtime.c:6492
const object primitive_caaadr
Definition: runtime.c:6501
object Cyc_thread_sleep(void *data, object timeout)
Accept a number of seconds to sleep according to SRFI-18.
Definition: runtime.c:6742
const object primitive__125
Definition: runtime.c:6456
void(* function_type_va)(int, object, object, object,...)
Definition: types.h:668
object Cyc_string2symbol(void *d, object str)
Definition: runtime.c:2415
const object primitive_list_91_125string
Definition: runtime.c:6532
void dispatch(void *data, int argc, function_type func, object clo, object cont, object args)
Definition: runtime.c:6154
object Cyc_substring(void *data, object cont, object str, object start, object end)
Definition: runtime.c:2841
object Cyc_sub_op(void *data, common_type *x, object y)
void dispatch_va(void *data, int argc, function_type_va func, object clo, object cont, object args)
Definition: runtime.c:6173
const object primitive_string_127
Definition: runtime.c:6561
const object primitive__121_123
Definition: runtime.c:6459
const object primitive_apply
Definition: runtime.c:6460
cvar_type * mcvar(object *var)
Definition: runtime.c:4608
object Cyc_compilation_environment(void *data, object cont, object var)
Definition: runtime.c:2937
port_type * Cyc_io_open_input_bytevector(void *data, object bv)
Definition: mstreams.c:56
object Cyc_set_cell(void *, object l, object val)
Definition: runtime.c:2070
void Cyc_start_trampoline(gc_thread_data *thd)
Definition: runtime.c:5730
object Cyc_eqv(object x, object y)
Definition: runtime.c:2044
void dispatch_write_va(void *data, int argc, object clo, object cont, object x,...)
Definition: runtime.c:1176
time_t Cyc_file_last_modified_time(char *path)
Definition: runtime.c:4588
void Cyc_remainder(void *data, object cont, object num1, object num2)
Definition: runtime.c:4368
const object primitive_delete_91file
Definition: runtime.c:6576
object Cyc_num_cmp_va_list(void *data, int argc, int(fn_op(void *, object, object)), object n, va_list ns)
Definition: runtime.c:1627
const object primitive_cons
Definition: runtime.c:6467
object Cyc_make_bytevector(void *data, object cont, int argc, object len,...)
Definition: runtime.c:3065
int equal(object, object)
Definition: runtime.c:752
void Cyc_rt_raise_msg(void *data, const char *err)
Raise an exception from the runtime code.
Definition: runtime.c:744
object Cyc_num_fast_lte_op(void *data, object x, object y)
object Cyc_list2vector(void *data, object cont, object l)
Definition: runtime.c:3415
void Cyc_mutable_obj_error(void *data, object obj)
Definition: runtime.c:73
const object boolean_f
Definition: runtime.c:389
object Cyc_io_delete_file(void *data, object filename)
Definition: runtime.c:4564
const object primitive_vector_91set_67
Definition: runtime.c:6483
const object primitive_string_91ref
Definition: runtime.c:6521
const object primitive_set_91car_67
Definition: runtime.c:6484
int Cyc_num_gt_op(void *, object x, object y)
object Cyc_length(void *d, object l)
Definition: runtime.c:2286
const object primitive_car
Definition: runtime.c:6486
const object primitive_Cyc_91display
Definition: runtime.c:6582
int binstr2int(const char *str)
Definition: runtime.c:2623
object Cyc_spawn_thread(object thunk)
Definition: runtime.c:6677
Symbols are similar to strings, but only one instance of each unique symbol is created, so comparisons are O(1).
Definition: types.h:787
const object primitive_number_91_125string
Definition: runtime.c:6535
object Cyc_io_flush_output_port(void *data, object port)
Definition: runtime.c:4550
object Cyc_default_exception_handler(void *data, int argc, closure _, object err)
The default exception handler.
Definition: runtime.c:654
void add_global(const char *identifier, object *glo)
Definition: runtime.c:502
const object primitive_string_91append
Definition: runtime.c:6531
const object primitive_set_91cdr_67
Definition: runtime.c:6485
uint32_t Cyc_utf8_validate(char *str, size_t len)
Simplified version of Cyc_utf8_validate_stream that must always be called with a complete string buff...
Definition: runtime.c:8012
object Cyc_fast_vector_2(object ptr, object a1, object a2)
Definition: runtime.c:1491
void Cyc_io_get_output_string(void *data, object cont, object port)
Definition: mstreams.c:93
object Cyc_num_gt(void *, object cont, int argc, object n,...)
object Cyc_io_read_line(void *data, object cont, object port)
Definition: runtime.c:7689
const object primitive_open_91binary_91output_91file
Definition: runtime.c:6569
const object primitive_cddr
Definition: runtime.c:6491
void Cyc_rt_raise(void *data, object err)
Raise an exception from the runtime code.
Definition: runtime.c:709
object Cyc_bytevector_u8_ref(void *data, object bv, object k)
Definition: runtime.c:3365
object Cyc_global_variables
Definition: runtime.c:189
const object primitive_close_91input_91port
Definition: runtime.c:6571
void Cyc_io_get_output_bytevector(void *data, object cont, object port)
Definition: mstreams.c:110
const object primitive_caddr
Definition: runtime.c:6495
#define cdr(x)
Definition: types.h:1306
const object primitive_null_127
Definition: runtime.c:6553
object Cyc_write_va(void *data, int argc, object x,...)
Definition: runtime.c:1187
char ** _cyc_argv
Definition: runtime.c:191
int Cyc_bignum_cmp(bn_cmp_type type, object x, int tx, object y, int ty)
Definition: runtime.c:1681
C-variable integration type - wrapper around a Cyclone object pointer.
Definition: types.h:676
object Cyc_system(object cmd)
Definition: runtime.c:3467
const object primitive__95
Definition: runtime.c:6454
object Cyc_string2number_(void *d, object cont, object str)
Definition: runtime.c:2589
port_type Cyc_io_open_binary_output_file(void *data, object str)
Definition: runtime.c:4505
const object primitive_make_91bytevector
Definition: runtime.c:6536
object Cyc_display_va_list(void *data, int argc, object x, va_list ap)
Definition: runtime.c:991
object Cyc_make_vector(void *data, object cont, int argc, object len,...)
Definition: runtime.c:3002
void Cyc_set_globals_changed(gc_thread_data *thd)
Definition: runtime.c:529
const object primitive_equal_127
Definition: runtime.c:6474
object Cyc_char_eq_op(void *data, object a, object b)
const object boolean_t
Definition: runtime.c:388
const object primitive_char_127
Definition: runtime.c:6551
const object primitive__123
Definition: runtime.c:6455
const object primitive_Cyc_91write
Definition: runtime.c:6581
const object primitive_Cyc_91set_91cvar_67
Definition: runtime.c:6444
const object primitive_Cyc_91bytevector_91copy
Definition: runtime.c:6540
const object primitive_cdr
Definition: runtime.c:6487
void Cyc_make_rectangular(void *data, object k, object r, object i)
Definition: runtime.c:6835
const object primitive_Cyc_91default_91exception_91handler
Definition: runtime.c:6465
object Cyc_global_set(void *thd, object sym, object *glo, object value)
Definition: runtime.c:344
const object primitive_Cyc_91opaque_127
Definition: runtime.c:6446
object Cyc_get_cvar(object var)
Definition: runtime.c:852
object Cyc_number2string2(void *data, object cont, int argc, object n,...)
Definition: runtime.c:2331
const object primitive__121
Definition: runtime.c:6457
const object primitive__75halt
Definition: runtime.c:6461
void Cyc_rt_raise2(void *data, const char *msg, object err)
Raise an exception from the runtime code.
Definition: runtime.c:726
object Cyc_list(void *data, int argc, object cont,...)
Definition: runtime.c:2476
object Cyc_fast_vector_5(object ptr, object a1, object a2, object a3, object a4, object a5)
Definition: runtime.c:1536
const object primitive_caadar
Definition: runtime.c:6502
void gc_init_heap(long heap_size)
Perform one-time heap initializations for the program.
Definition: runtime.c:314
const object primitive_read_91char
Definition: runtime.c:6577
const object primitive_Cyc_91end_91thread_67
Definition: runtime.c:6450
object Cyc_integer2char(void *data, object n)
Definition: runtime.c:3493
object Cyc_io_file_exists(void *data, object filename)
Definition: runtime.c:4574
void set_env_variables(char **vars)
Definition: runtime.c:255
void(* function_type)()
Definition: types.h:665
int octstr2int(const char *str)
Definition: runtime.c:2634
object Cyc_string2utf8(void *data, object cont, object str, object start, object end)
Definition: runtime.c:3272
object find_or_add_symbol(const char *name)
Definition: runtime.c:463
void Cyc_end_thread(gc_thread_data *thd)
Definition: runtime.c:6713
const object primitive_file_91exists_127
Definition: runtime.c:6575
object Cyc_string2number2_(void *data, object cont, int argc, object str,...)
Definition: runtime.c:2483
object cell_get(object cell)
Definition: runtime.c:338
object Cyc_bytevector_u8_set(void *data, object bv, object k, object b)
Definition: runtime.c:3385
const object primitive_open_91binary_91input_91file
Definition: runtime.c:6568
const object primitive_assv
Definition: runtime.c:6476
object apply_va(void *data, object cont, int argc, object func,...)
Definition: runtime.c:5578
list malloc_make_pair(object, object)
Definition: runtime.c:4596
const object primitive_vector_127
Definition: runtime.c:6563
const object primitive_bytevector
Definition: runtime.c:6538
object Cyc_io_peek_char(void *data, object cont, object port)
Definition: runtime.c:7551
object Cyc_num_lt(void *, object cont, int argc, object n,...)
object Cyc_num_op_va_list(void *data, int argc, object(fn_op(void *, common_type *, object)), int default_no_args, int default_one_arg, object n, va_list ns, common_type *buf)
Definition: runtime.c:4204
object Cyc_bytevector_length(void *data, object bv)
Definition: runtime.c:3405
const object primitive_exit
Definition: runtime.c:6462
const object primitive_caaaar
Definition: runtime.c:6500
int Cyc_utf8_count_code_points(uint8_t *s)
Count the number of code points in a string. Based on example code from Bjoern Hoehrmann.
Definition: runtime.c:7945
const object primitive_vector_91length
Definition: runtime.c:6481
const object primitive_call_95cc
Definition: runtime.c:6583
int Cyc_utf8_encode(char *dest, int sz, uint32_t *src, int srcsz)
Definition: runtime.c:8057
object Cyc_set_car(void *, object l, object val)
Definition: runtime.c:2079
object Cyc_bytevector_append(void *data, object cont, int _argc, object bv,...)
Definition: runtime.c:3187
const object primitive__125_123
Definition: runtime.c:6458
object __halt(object obj)
Definition: runtime.c:3518
object Cyc_vector_set_unsafe_cps(void *d, object cont, object v, object k, object obj)
Definition: runtime.c:2227
object Cyc_string_cmp(void *data, object str1, object str2)
Definition: runtime.c:2644
const object primitive_eof_91object_127
Definition: runtime.c:6552
const object primitive_bytevector_91u8_91set_67
Definition: runtime.c:6543
const object primitive_eq_127
Definition: runtime.c:6472
port_type Cyc_io_open_binary_input_file(void *data, object str)
Definition: runtime.c:4498
object Cyc_set_cdr(void *, object l, object val)
Definition: runtime.c:2091
const object primitive_Cyc_91string_91_125utf8
Definition: runtime.c:6545
object Cyc_mul_op(void *data, common_type *x, object y)
object Cyc_string_byte_length(void *data, object str)
Definition: runtime.c:2705
const object primitive_cdaaar
Definition: runtime.c:6508
object Cyc_is_list(object lst)
Definition: runtime.c:913
const object primitive_string_91_125number
Definition: runtime.c:6518
const object primitive_eqv_127
Definition: runtime.c:6473
const object primitive_string_91_125symbol
Definition: runtime.c:6533
const object primitive_cadddr
Definition: runtime.c:6507
void do_dispatch(void *data, int argc, function_type func, object clo, object *buffer)
void Cyc_exit_thread(gc_thread_data *thd)
Definition: runtime.c:6722
object Cyc_write_va_list(void *data, int argc, object x, va_list ap)
Definition: runtime.c:1197
const object primitive_bytevector_91u8_91ref
Definition: runtime.c:6542
object Cyc_vector_set(void *d, object v, object k, object obj)
Definition: runtime.c:2103
const object primitive__91
Definition: runtime.c:6452
const object primitive_list_91_125vector
Definition: runtime.c:6549
int Cyc_num_gte_op(void *, object x, object y)
const object primitive_vector_91ref
Definition: runtime.c:6482
port_type * Cyc_io_open_input_string(void *data, object str)
Definition: mstreams.c:35
object Cyc_string_length(void *data, object str)
Definition: runtime.c:2699
object Cyc_has_cycle(object lst)
Definition: runtime.c:880
object Cyc_trigger_minor_gc(void *data, object cont)
Trigger a minor GC for the calling thread.
Definition: runtime.c:5916
const object primitive_system
Definition: runtime.c:6529
object Cyc_list2string(void *d, object cont, object lst)
Definition: runtime.c:2426
object Cyc_fast_div(void *data, object ptr, object x, object y)
Definition: runtime.c:3988
object Cyc_glo_eval_from_c
Definition: runtime.c:645
object Cyc_display_va(void *data, int argc, object x,...)
Definition: runtime.c:981
const object primitive_macro_127
Definition: runtime.c:6559
object Cyc_char_lte_op(void *data, object a, object b)
const object primitive_memv
Definition: runtime.c:6478
const object primitive_peek_91char
Definition: runtime.c:6578
const object primitive_cadar
Definition: runtime.c:6494
object Cyc_utf82string(void *data, object cont, object bv, object start, object end)
Definition: runtime.c:3238
object Cyc_io_close_input_port(void *data, object port)
Definition: runtime.c:4512
object Cyc_io_read_u8(void *data, object cont, object port)
Definition: runtime.c:7670
object dispatch_string_91append(void *data, int argc, object clo, object cont, object str1,...)
Definition: runtime.c:2684
object Cyc_sub(void *data, object cont, int argc, object n,...)
const object primitive_symbol_91_125string
Definition: runtime.c:6534
object Cyc_char_lt_op(void *data, object a, object b)
port_type Cyc_stdin(void)
Definition: runtime.c:4450
const object primitive_boolean_127
Definition: runtime.c:6550
object Cyc_sum(void *data, object cont, int argc, object n,...)
void pack_env_variables(void *data, object k)
Definition: runtime.c:209
object Cyc_bytevector_copy(void *data, object cont, object bv, object start, object end)
Definition: runtime.c:3192
int Cyc_num_eq_op(void *, object x, object y)
object Cyc_fast_sub(void *data, object ptr, object x, object y)
Definition: runtime.c:3788
const object primitive_Cyc_91installation_91dir
Definition: runtime.c:6523
const object primitive_Cyc_91cvar_127
Definition: runtime.c:6445
const object primitive_caadr
Definition: runtime.c:6493
const object primitive_close_91output_91port
Definition: runtime.c:6572
const object primitive_bytevector_127
Definition: runtime.c:6564
const object primitive_make_91vector
Definition: runtime.c:6537
const object primitive_cadr
Definition: runtime.c:6489
object Cyc_mul(void *data, object cont, int argc, object n,...)
const object primitive_bytevector_91length
Definition: runtime.c:6480
const object primitive_set_91global_67
Definition: runtime.c:6469
object Cyc_is_real(object o)
Definition: runtime.c:1883
object Cyc_num_fast_gt_op(void *data, object x, object y)
void Cyc_st_print(void *data, FILE *out)
Print the contents of the given thread's stack trace buffer.
Definition: runtime.c:399
int Cyc_num_lt_op(void *, object x, object y)
const object primitive_assq
Definition: runtime.c:6475
object Cyc_bit_unset(void *data, object n1, object n2)
Definition: runtime.c:6814
void Cyc_check_bounds(void *data, const char *label, int len, int index)
Definition: runtime.c:85
const object primitive_integer_91_125char
Definition: runtime.c:6517
object Cyc_fast_vector_4(object ptr, object a1, object a2, object a3, object a4)
Definition: runtime.c:1520
object Cyc_div(void *data, object cont, int argc, object n,...)
Definition: runtime.c:4177
object Cyc_char_gt_op(void *data, object a, object b)
void Cyc_invalid_type_error(void *data, int tag, object found)
Definition: runtime.c:56
const object primitive_caaddr
Definition: runtime.c:6503
const object primitive_cdadr
Definition: runtime.c:6497
const object primitive_char_91_125integer
Definition: runtime.c:6516
port_type Cyc_stderr(void)
Definition: runtime.c:4456
A union of all the constant-size objects.
Definition: types.h:1476
void dispatch_apply_va(void *data, int argc, object clo, object cont, object func,...)
Definition: runtime.c:5567
object Cyc_display(void *data, object, FILE *port)
Definition: runtime.c:1007
#define car(x)
Definition: types.h:1304
int _cyc_argc
Definition: runtime.c:190
const object primitive__85
Definition: runtime.c:6453
object Cyc_num_eq(void *, object cont, int argc, object n,...)
object Cyc_num_fast_lt_op(void *data, object x, object y)
list assoc_cdr(void *data, object x, list l)
Definition: runtime.c:1450
object Cyc_symbol2string(void *d, object cont, object sym)
Definition: runtime.c:2406
const object primitive_bytevector_91append
Definition: runtime.c:6539
object Cyc_current_exception_handler(void *data)
Return the current exception handler.
Definition: runtime.c:694
const object primitive_Cyc_91get_91cvar
Definition: runtime.c:6443
object Cyc_set_cvar(object var, object value)
Definition: runtime.c:860
void Cyc_halt(object obj)
Definition: runtime.c:3502
object Cyc_fast_list_2(object ptr, object x, object y)
Definition: runtime.c:1464
const object Cyc_VOID
Definition: runtime.c:197
object is_library_loaded(const char *name)
Definition: runtime.c:476
object Cyc_num_gte(void *, object cont, int argc, object n,...)
const object primitive_Cyc_91has_91cycle_127
Definition: runtime.c:6447
object memqp(void *data, object x, list l)
Definition: runtime.c:1409
object Cyc_is_number(object o)
Definition: runtime.c:1872
object Cyc_is_integer(object o)
Definition: runtime.c:1909
const object primitive_Cyc_91current_91exception_91handler
Definition: runtime.c:6463
const object primitive_Cyc_91utf8_91_125string
Definition: runtime.c:6547
object Cyc_io_close_port(void *data, object port)
Definition: runtime.c:4522
object Cyc_command_line_arguments(void *data, object cont)
Definition: runtime.c:2982
const object primitive_set_91cell_67
Definition: runtime.c:6470
const object primitive_cdddar
Definition: runtime.c:6514
object Cyc_bytevector(void *data, object cont, int argc, object bval,...)
Definition: runtime.c:3141
list global_table
Definition: runtime.c:500
const object primitive_length
Definition: runtime.c:6479
object Cyc_is_procedure(void *data, object o)
Definition: runtime.c:1983
bn_cmp_type
Definition: types.h:920
list assoc(void *data, object x, list l)
Definition: runtime.c:1433
const object primitive_Cyc_91spawn_91thread_67
Definition: runtime.c:6448
const object primitive_Cyc_91compilation_91environment
Definition: runtime.c:6525
const object primitive_Cyc_91global_91vars
Definition: runtime.c:6442
const object primitive_cddddr
Definition: runtime.c:6515
object Cyc_installation_dir(void *data, object cont, object type)
Definition: runtime.c:2902
#define Cyc_check_pair(d, obj)
Definition: runtime.h:83
object Cyc_bignum_normalize(void *data, object n)
Definition: runtime.c:1652
object Cyc_vector_set_unsafe(void *d, object v, object k, object obj)
Definition: runtime.c:2122
object Cyc_sum_op(void *data, common_type *x, object y)
const object primitive_string_91cmp
Definition: runtime.c:6530
object Cyc_vector_length(void *data, object v)
Definition: runtime.c:2276
object apply(void *data, object cont, object func, object args)
Definition: runtime.c:5593
object Cyc_fast_list_4(object ptr, object a1, object a2, object a3, object a4)
Definition: runtime.c:1481
const object primitive_cell_91get
Definition: runtime.c:6468
object Cyc_io_peek_u8(void *data, object cont, object port)
Definition: runtime.c:7606
const object primitive_pair_127
Definition: runtime.c:6557
#define prim(x)
Definition: types.h:1467
const object primitive__87
Definition: runtime.c:6451
const object primitive_cadadr
Definition: runtime.c:6505
const object primitive_number_127
Definition: runtime.c:6554
object Cyc_num_lte(void *, object cont, int argc, object n,...)
list assq(void *data, object x, list l)
Definition: runtime.c:1419
object Cyc_set_cdr_cps(void *, object cont, object l, object val)
Definition: runtime.c:2168
void Cyc_check_obj(void *data, int tag, object obj)
Definition: runtime.c:78
port_type Cyc_io_open_output_file(void *data, object str)
Definition: runtime.c:4493
object Cyc_fast_list_3(object ptr, object a1, object a2, object a3)
Definition: runtime.c:1472
void GC(void *, closure, object *, int)
Definition: runtime.c:6079
object Cyc_num_fast_gte_op(void *data, object x, object y)
const object primitive_real_127
Definition: runtime.c:6555
const object primitive_string_91set_67
Definition: runtime.c:6522
const object primitive_cdar
Definition: runtime.c:6490
const object primitive_cddadr
Definition: runtime.c:6513
object Cyc_div_op(void *data, common_type *x, object y)
Definition: runtime.c:4079
const object primitive_cddar
Definition: runtime.c:6498
const object primitive_close_91port
Definition: runtime.c:6570