924 return ( t_ok && t_valid ) ;
1006#define ERROR_SYMBOL_MASK 0xFFFFFF0F
1008#define ERROR_SYMBOL_MASK 0xFFFFFFFFFFFFF0FF
1073 cell->
car = car_val;
1074 cell->
cdr = cdr_val;
1080#define TRAV_FUN_SUBTREE_DONE 0
1081#define TRAV_FUN_SUBTREE_CONTINUE 1
1082#define TRAV_FUN_SUBTREE_PROCEED 2
1099#define lbm_dec_as_int lbm_dec_as_i64
1100#define lbm_dec_as_uint lbm_dec_as_u64
1102#define lbm_dec_as_int lbm_dec_as_i32
1103#define lbm_dec_as_uint lbm_dec_as_u32
int32_t lbm_dec_as_i32(lbm_value val)
Definition heap.c:388
lbm_uint lbm_heap_size_bytes(void)
Definition heap.c:661
static bool lbm_is_error(lbm_value v)
Definition heap.h:1014
lbm_flash_status write_const_cdr(lbm_value cell, lbm_value val)
Definition heap.c:1347
static int lbm_set_car(lbm_value c, lbm_value v)
Definition heap.h:1035
lbm_value lbm_enc_double(double x)
Definition heap.c:223
const uint8_t * lbm_heap_array_get_data_ro(lbm_value arr)
Definition heap.c:1200
int64_t lbm_dec_as_i64(lbm_value val)
Definition heap.c:413
void lbm_gc_mark_env(lbm_value)
Definition heap.c:838
lbm_value lbm_set_float(lbm_value v, float x)
Definition heap.c:157
static lbm_value lbm_enc_char(uint8_t x)
Definition heap.h:776
lbm_value lbm_list_append(lbm_value list1, lbm_value list2)
Definition heap.c:1054
lbm_flash_status write_const_car(lbm_value cell, lbm_value val)
Definition heap.c:1354
void lbm_heap_new_gc_time(lbm_uint dur)
lbm_flash_status
Definition heap.h:195
@ LBM_FLASH_FULL
Definition heap.h:197
@ LBM_FLASH_WRITE_ERROR
Definition heap.h:198
@ LBM_FLASH_WRITE_OK
Definition heap.h:196
int lbm_heap_allocate_lisp_array(lbm_value *res, lbm_uint size)
Definition heap.c:1158
lbm_value lbm_cddr(lbm_value c)
Definition heap.c:990
static uint32_t lbm_dec_u32(lbm_value x)
Definition heap.h:809
lbm_uint lbm_dec_custom(lbm_value val)
Definition heap.c:331
#define ERROR_SYMBOL_MASK
Definition heap.h:1006
#define lbm_dec_as_uint
Definition heap.h:1103
static lbm_value lbm_set_ptr_type(lbm_value p, lbm_type t)
Definition heap.h:702
char * lbm_dec_str(lbm_value val)
Definition heap.c:295
static bool lbm_is_cons_rw(lbm_value x)
Definition heap.h:856
static lbm_uint lbm_dec_sym(lbm_value x)
Definition heap.h:792
static bool lbm_is_symbol_nil(lbm_value exp)
Definition heap.h:887
lbm_uint lbm_get_gc_stack_max(void)
Definition heap.c:669
lbm_array_header_t * lbm_dec_array_r(lbm_value val)
Definition heap.c:306
static bool lbm_is_list_rw(lbm_value x)
Definition heap.h:994
lbm_value lbm_enc_float(float x)
Definition heap.c:172
static lbm_uint lbm_dec_u(lbm_value x)
Definition heap.h:784
double lbm_dec_as_double(lbm_value val)
Definition heap.c:488
static bool lbm_is_array_r(lbm_value x)
Definition heap.h:920
void lbm_get_heap_state(lbm_heap_state_t *)
Definition heap.c:665
lbm_flash_status lbm_write_const_raw(lbm_uint *data, lbm_uint n, lbm_uint *res)
Definition heap.c:1315
static bool lbm_is_quoted_list(lbm_value x)
Definition heap.h:998
#define lbm_dec_as_int
Definition heap.h:1102
lbm_value lbm_index_list(lbm_value l, int32_t n)
Definition heap.c:1081
static int lbm_set_cdr(lbm_value c, lbm_value v)
Definition heap.h:1052
lbm_value lbm_cons(lbm_value car, lbm_value cdr)
Definition heap.c:943
void lbm_gc_lock(void)
Definition heap.c:101
lbm_int lbm_heap_array_get_size(lbm_value arr)
Definition heap.c:1190
lbm_value lbm_list_copy(int *m, lbm_value list)
Definition heap.c:1027
int lbm_lift_array(lbm_value *value, char *data, lbm_uint num_elt)
Definition heap.c:1162
static bool lbm_is_symbol(lbm_value exp)
Definition heap.h:877
int(* trav_fun)(lbm_value, bool, void *)
Definition heap.h:1084
lbm_value lbm_cdr(lbm_value cons)
Definition heap.c:982
static bool lbm_is_closure(lbm_value exp)
Definition heap.h:956
static uint8_t lbm_dec_char(lbm_value x)
Definition heap.h:788
void lbm_ptr_rev_trav(trav_fun f, lbm_value v, void *arg)
Definition heap.c:1392
void lbm_gc_mark_aux(lbm_uint *data, lbm_uint n)
Definition heap.c:854
static lbm_cons_t * lbm_dec_heap(lbm_value p)
Definition heap.h:697
static bool lbm_is_symbol_merror(lbm_value exp)
Definition heap.h:986
static lbm_int lbm_dec_i(lbm_value x)
Definition heap.h:780
static lbm_value lbm_enc_i(lbm_int x)
Definition heap.h:710
void lbm_gc_state_inc(void)
Definition heap.c:936
lbm_value lbm_heap_allocate_list(lbm_uint n)
Definition heap.c:603
int lbm_const_heap_init(const_heap_write_fun w_fun, lbm_const_heap_t *heap, lbm_uint *addr)
Definition heap.c:1254
lbm_flash_status lbm_allocate_const_raw(lbm_uint nwords, lbm_uint *res)
Definition heap.c:1302
static bool lbm_is_lisp_array_rw(lbm_value x)
Definition heap.h:938
static lbm_type lbm_type_of_functional(lbm_value x)
Definition heap.h:676
static lbm_value lbm_enc_u(lbm_uint x)
Definition heap.h:714
static bool lbm_is_constant(lbm_value x)
Definition heap.h:846
static bool lbm_heap_array_valid(lbm_value arr)
Definition heap.h:912
lbm_value lbm_caar(lbm_value c)
Definition heap.c:959
static bool lbm_is_channel(lbm_value x)
Definition heap.h:943
int lbm_heap_allocate_array(lbm_value *res, lbm_uint size)
Definition heap.c:1154
lbm_uint lbm_list_length(lbm_value c)
Definition heap.c:1001
lbm_value lbm_set_i32(lbm_value v, int32_t x)
Definition heap.c:147
uint64_t lbm_dec_u64(lbm_value x)
Definition heap.c:269
bool(* const_heap_write_fun)(lbm_uint w, lbm_uint ix)
Definition heap.h:234
void lbm_gc_unlock(void)
Definition heap.c:103
static lbm_uint lbm_dec_cons_cell_ptr(lbm_value p)
Definition heap.h:692
static int lbm_set_car_and_cdr(lbm_value c, lbm_value car_val, lbm_value cdr_val)
Definition heap.h:1069
lbm_value lbm_heap_allocate_list_init(unsigned int n,...)
Definition heap.c:646
static bool lbm_is_lisp_array_r(lbm_value x)
Definition heap.h:933
lbm_uint lbm_dec_raw(lbm_value v)
static lbm_uint lbm_heap_num_free(void)
Definition heap.h:295
lbm_uint lbm_heap_size(void)
Definition heap.c:657
bool lbm_heap_init(lbm_cons_t *addr, lbm_uint num_cells, lbm_uint gc_stack_size)
Definition heap.c:568
static bool lbm_is_match_binder(lbm_value exp)
Definition heap.h:968
static lbm_type lbm_type_of(lbm_value x)
Definition heap.h:666
static int32_t lbm_dec_i32(lbm_value x)
Definition heap.h:823
static bool lbm_is_ptr(lbm_value x)
Definition heap.h:842
static bool lbm_is_comma_qualified_symbol(lbm_value exp)
Definition heap.h:972
static lbm_cons_t * lbm_ref_cell(lbm_value addr)
Definition heap.h:1024
uint64_t lbm_dec_as_u64(lbm_value val)
Definition heap.c:438
lbm_value lbm_car(lbm_value cons)
Definition heap.c:947
lbm_value lbm_cadr(lbm_value c)
Definition heap.c:971
lbm_uint lbm_flash_memory_usage(void)
Definition heap.c:1361
lbm_value lbm_set_u32(lbm_value v, uint32_t x)
Definition heap.c:137
static bool lbm_is_array_rw(lbm_value x)
Definition heap.h:927
lbm_value lbm_enc_u32(uint32_t x)
Definition heap.c:120
static bool lbm_is_symbol_true(lbm_value exp)
Definition heap.h:978
static bool lbm_is_continuation(lbm_value exp)
Definition heap.h:960
lbm_cons_t * lbm_heaps[2]
Definition heap.c:85
static bool lbm_is_symbol_eval(lbm_value exp)
Definition heap.h:982
lbm_array_header_t * lbm_dec_array_rw(lbm_value val)
Definition heap.c:314
lbm_value lbm_enc_i32(int32_t x)
Definition heap.c:110
lbm_flash_status lbm_const_write(lbm_uint *tgt, lbm_uint val)
Definition heap.c:1334
static lbm_uint lbm_dec_ptr(lbm_value p)
Definition heap.h:686
void lbm_heap_new_freelist_length(void)
Definition heap.c:562
lbm_value lbm_enc_i64(int64_t x)
Definition heap.c:203
lbm_value lbm_enc_u64(uint64_t x)
Definition heap.c:213
static bool lbm_is_char(lbm_value x)
Definition heap.h:947
int lbm_gc_sweep_phase(void)
Definition heap.c:875
float lbm_dec_as_float(lbm_value val)
Definition heap.c:463
static bool lbm_is_special(lbm_value symrep)
Definition heap.h:951
static bool lbm_is_cons(lbm_value x)
Definition heap.h:866
void lbm_nil_freelist(void)
Definition heap.c:539
static lbm_value lbm_enc_cons_ptr(lbm_uint x)
Definition heap.h:682
int lbm_heap_explicit_free_array(lbm_value arr)
Definition heap.c:1226
lbm_uint lbm_get_gc_stack_size(void)
Definition heap.c:673
lbm_value lbm_list_drop(unsigned int n, lbm_value ls)
Definition heap.c:1072
lbm_uint lbm_heap_num_allocated(void)
Definition heap.c:654
void lbm_gc_mark_roots(lbm_uint *roots, lbm_uint num_roots)
Definition heap.c:868
lbm_value lbm_heap_allocate_list_init_va(unsigned int n, va_list valist)
Definition heap.c:625
static bool lbm_is_number(lbm_value x)
Definition heap.h:897
lbm_value lbm_heap_allocate_cell(lbm_type ptr_type, lbm_value car, lbm_value cdr)
Definition heap.c:587
static lbm_value lbm_enc_sym(lbm_uint s)
Definition heap.h:706
float lbm_dec_float(lbm_value x)
Definition heap.c:239
uint32_t lbm_dec_as_u32(lbm_value val)
Definition heap.c:364
lbm_value lbm_list_destructive_reverse(lbm_value list)
Definition heap.c:1011
lbm_flash_status lbm_allocate_const_cell(lbm_value *res)
Definition heap.c:1281
int64_t lbm_dec_i64(lbm_value x)
Definition heap.c:282
uint8_t lbm_dec_as_char(lbm_value a)
Definition heap.c:339
void lbm_gc_mark_phase(lbm_value root)
Definition heap.c:748
double lbm_dec_double(lbm_value x)
Definition heap.c:253
static bool lbm_is_list(lbm_value x)
Definition heap.h:990
static bool lbm_is_macro(lbm_value exp)
Definition heap.h:964
lbm_heap_state_t lbm_heap_state
Definition heap.c:81
lbm_char_channel_t * lbm_dec_channel(lbm_value val)
Definition heap.c:322
#define ENC_SYM_CONT
Definition lbm_defines.h:498
#define LBM_TYPE_ARRAY
Definition lbm_defines.h:54
#define LBM_EXACT_CONS_MASK
Definition lbm_defines.h:64
#define ENC_SYM_COMMA
Definition lbm_defines.h:469
#define LBM_PTR_BIT
Definition lbm_defines.h:33
#define LBM_LOW_RESERVED_BITS
Definition lbm_defines.h:87
#define LBM_CONS_TYPE_MASK
Definition lbm_defines.h:67
#define ENC_SYM_MERROR
Definition lbm_defines.h:421
#define LBM_PTR_TO_CONSTANT_BIT
Definition lbm_defines.h:40
#define LBM_TYPE_CONS
Definition lbm_defines.h:45
#define LBM_TYPE_CHANNEL
Definition lbm_defines.h:56
#define SPECIAL_SYMBOLS_END
Definition lbm_defines.h:395
#define LBM_TYPE_U
Definition lbm_defines.h:86
#define LBM_NUMBER_MASK
Definition lbm_defines.h:79
#define LBM_TYPE_I
Definition lbm_defines.h:85
#define ENC_SYM_EVAL
Definition lbm_defines.h:515
#define LBM_PTR_TO_CONSTANT_MASK
Definition lbm_defines.h:41
#define ENC_SYM_CLOSURE
Definition lbm_defines.h:499
#define LBM_PTR_VAL_MASK
Definition lbm_defines.h:34
#define ENC_SYM_CHANNEL_TYPE
Definition lbm_defines.h:437
#define LBM_PTR_TYPE_MASK
Definition lbm_defines.h:35
#define LBM_TYPE_LISPARRAY
Definition lbm_defines.h:58
#define LBM_TYPE_CHAR
Definition lbm_defines.h:83
#define ENC_SYM_QUOTE
Definition lbm_defines.h:484
#define ENC_SYM_MACRO
Definition lbm_defines.h:497
#define LBM_CONS_CONST_TYPE_MASK
Definition lbm_defines.h:68
#define LBM_VAL_SHIFT
Definition lbm_defines.h:30
#define LBM_ADDRESS_SHIFT
Definition lbm_defines.h:29
#define LBM_VAL_TYPE_MASK
Definition lbm_defines.h:77
#define ENC_SYM_TRUE
Definition lbm_defines.h:414
#define LBM_PTR_TO_CONSTANT_SHIFT
Definition lbm_defines.h:42
#define LBM_TYPE_SYMBOL
Definition lbm_defines.h:82
#define ENC_SYM_MATCH_ANY
Definition lbm_defines.h:446
int32_t lbm_int
Definition lbm_types.h:49
uint32_t lbm_uint
Definition lbm_types.h:48
uint32_t lbm_type
Definition lbm_types.h:46
uint32_t lbm_value
Definition lbm_types.h:44
Definition lbm_channel.h:69
lbm_value cdr
Definition heap.h:206
lbm_value car
Definition heap.h:205
lbm_uint size
Definition heap.h:239
lbm_uint * heap
Definition heap.h:237
lbm_uint next
Definition heap.h:238
lbm_uint gc_least_free
Definition heap.h:227
lbm_uint heap_bytes
Definition heap.h:218
lbm_uint gc_recovered
Definition heap.h:225
lbm_uint num_free
Definition heap.h:220
lbm_uint gc_marked
Definition heap.h:224
lbm_uint num_alloc_arrays
Definition heap.h:221
lbm_uint gc_recovered_arrays
Definition heap.h:226
lbm_value freelist
Definition heap.h:214
lbm_stack_t gc_stack
Definition heap.h:215
lbm_uint heap_size
Definition heap.h:217
lbm_cons_t * heap
Definition heap.h:213
lbm_uint gc_last_free
Definition heap.h:228
lbm_uint gc_num
Definition heap.h:223