700#define LBM_RAM_HEAP 0
701#define LBM_CONST_HEAP 1
944 return ( t_ok && t_valid ) ;
1026#define ERROR_SYMBOL_MASK 0xFFFFFF0F
1028#define ERROR_SYMBOL_MASK 0xFFFFFFFFFFFFF0FF
1093 cell->
car = car_val;
1094 cell->
cdr = cdr_val;
1100#define TRAV_FUN_SUBTREE_DONE 0
1101#define TRAV_FUN_SUBTREE_CONTINUE 1
1102#define TRAV_FUN_SUBTREE_PROCEED 2
1119#define lbm_dec_as_int lbm_dec_as_i64
1120#define lbm_dec_as_uint lbm_dec_as_u64
1122#define lbm_dec_as_int lbm_dec_as_i32
1123#define lbm_dec_as_uint lbm_dec_as_u32
int32_t lbm_dec_as_i32(lbm_value val)
Definition heap.c:396
void lbm_gc_mark_continuation_stack(lbm_uint *data, lbm_uint n)
Definition heap.c:878
lbm_uint lbm_heap_size_bytes(void)
Definition heap.c:670
static bool lbm_is_error(lbm_value v)
Definition heap.h:1034
lbm_flash_status write_const_cdr(lbm_value cell, lbm_value val)
Definition heap.c:1373
static int lbm_set_car(lbm_value c, lbm_value v)
Definition heap.h:1055
lbm_value lbm_enc_double(double x)
Definition heap.c:221
const uint8_t * lbm_heap_array_get_data_ro(lbm_value arr)
Definition heap.c:1226
int64_t lbm_dec_as_i64(lbm_value val)
Definition heap.c:421
void lbm_gc_mark_env(lbm_value)
Definition heap.c:857
lbm_value lbm_set_float(lbm_value v, float x)
Definition heap.c:155
static lbm_value lbm_enc_char(uint8_t x)
Definition heap.h:784
lbm_value lbm_list_append(lbm_value list1, lbm_value list2)
Definition heap.c:1080
lbm_flash_status write_const_car(lbm_value cell, lbm_value val)
Definition heap.c:1380
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:1184
lbm_value lbm_cddr(lbm_value c)
Definition heap.c:1016
static uint32_t lbm_dec_u32(lbm_value x)
Definition heap.h:817
lbm_uint lbm_dec_custom(lbm_value val)
Definition heap.c:339
#define ERROR_SYMBOL_MASK
Definition heap.h:1026
#define lbm_dec_as_uint
Definition heap.h:1123
static lbm_value lbm_set_ptr_type(lbm_value p, lbm_type t)
Definition heap.h:710
char * lbm_dec_str(lbm_value val)
Definition heap.c:293
static bool lbm_is_cons_rw(lbm_value x)
Definition heap.h:874
static lbm_uint lbm_dec_sym(lbm_value x)
Definition heap.h:800
static bool lbm_is_symbol_nil(lbm_value exp)
Definition heap.h:907
lbm_uint lbm_get_gc_stack_max(void)
Definition heap.c:678
lbm_array_header_t * lbm_dec_array_r(lbm_value val)
Definition heap.c:314
static bool lbm_is_list_rw(lbm_value x)
Definition heap.h:1014
lbm_value lbm_enc_float(float x)
Definition heap.c:170
static lbm_uint lbm_dec_u(lbm_value x)
Definition heap.h:792
double lbm_dec_as_double(lbm_value val)
Definition heap.c:496
static bool lbm_is_array_r(lbm_value x)
Definition heap.h:940
void lbm_get_heap_state(lbm_heap_state_t *)
Definition heap.c:674
lbm_flash_status lbm_write_const_raw(lbm_uint *data, lbm_uint n, lbm_uint *res)
Definition heap.c:1341
static bool lbm_is_quoted_list(lbm_value x)
Definition heap.h:1018
#define lbm_dec_as_int
Definition heap.h:1122
lbm_value lbm_index_list(lbm_value l, int32_t n)
Definition heap.c:1107
static int lbm_set_cdr(lbm_value c, lbm_value v)
Definition heap.h:1072
lbm_value lbm_cons(lbm_value car, lbm_value cdr)
Definition heap.c:969
void lbm_gc_lock(void)
Definition heap.c:98
lbm_int lbm_heap_array_get_size(lbm_value arr)
Definition heap.c:1216
lbm_value lbm_list_copy(int *m, lbm_value list)
Definition heap.c:1053
int lbm_lift_array(lbm_value *value, char *data, lbm_uint num_elt)
Definition heap.c:1188
static bool lbm_is_symbol(lbm_value exp)
Definition heap.h:897
int(* trav_fun)(lbm_value, bool, void *)
Definition heap.h:1104
lbm_value lbm_cdr(lbm_value cons)
Definition heap.c:1008
static bool lbm_is_closure(lbm_value exp)
Definition heap.h:976
static uint8_t lbm_dec_char(lbm_value x)
Definition heap.h:796
void lbm_ptr_rev_trav(trav_fun f, lbm_value v, void *arg)
Definition heap.c:1418
static lbm_cons_t * lbm_dec_heap(lbm_value p)
Definition heap.h:705
static bool lbm_is_symbol_merror(lbm_value exp)
Definition heap.h:1006
static lbm_int lbm_dec_i(lbm_value x)
Definition heap.h:788
static lbm_value lbm_enc_i(lbm_int x)
Definition heap.h:718
void lbm_gc_state_inc(void)
Definition heap.c:962
lbm_value lbm_heap_allocate_list(lbm_uint n)
Definition heap.c:612
bool lbm_dec_str_size(lbm_value val, char **data, size_t *size)
Definition heap.c:304
int lbm_const_heap_init(const_heap_write_fun w_fun, lbm_const_heap_t *heap, lbm_uint *addr)
Definition heap.c:1280
lbm_flash_status lbm_allocate_const_raw(lbm_uint nwords, lbm_uint *res)
Definition heap.c:1328
static bool lbm_is_lisp_array_rw(lbm_value x)
Definition heap.h:958
static lbm_type lbm_type_of_functional(lbm_value x)
Definition heap.h:686
static lbm_value lbm_enc_u(lbm_uint x)
Definition heap.h:722
static bool lbm_is_constant(lbm_value x)
Definition heap.h:854
static bool lbm_heap_array_valid(lbm_value arr)
Definition heap.h:932
lbm_value lbm_caar(lbm_value c)
Definition heap.c:985
static bool lbm_is_channel(lbm_value x)
Definition heap.h:963
int lbm_heap_allocate_array(lbm_value *res, lbm_uint size)
Definition heap.c:1180
lbm_uint lbm_list_length(lbm_value c)
Definition heap.c:1027
lbm_value lbm_set_i32(lbm_value v, int32_t x)
Definition heap.c:145
uint64_t lbm_dec_u64(lbm_value x)
Definition heap.c:267
bool(* const_heap_write_fun)(lbm_uint w, lbm_uint ix)
Definition heap.h:234
void lbm_gc_unlock(void)
Definition heap.c:100
static int lbm_set_car_and_cdr(lbm_value c, lbm_value car_val, lbm_value cdr_val)
Definition heap.h:1089
lbm_value lbm_heap_allocate_list_init(unsigned int n,...)
Definition heap.c:655
static bool lbm_is_lisp_array_r(lbm_value x)
Definition heap.h:953
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:666
bool lbm_heap_init(lbm_cons_t *addr, lbm_uint num_cells, lbm_uint gc_stack_size)
Definition heap.c:577
static bool lbm_is_match_binder(lbm_value exp)
Definition heap.h:988
static bool lbm_ptr_is_constant(lbm_value x)
Definition heap.h:865
static lbm_type lbm_type_of(lbm_value x)
Definition heap.h:676
static int32_t lbm_dec_i32(lbm_value x)
Definition heap.h:831
static bool lbm_is_ptr(lbm_value x)
Definition heap.h:850
static bool lbm_is_comma_qualified_symbol(lbm_value exp)
Definition heap.h:992
static lbm_cons_t * lbm_ref_cell(lbm_value addr)
Definition heap.h:1044
uint64_t lbm_dec_as_u64(lbm_value val)
Definition heap.c:446
lbm_value lbm_car(lbm_value cons)
Definition heap.c:973
lbm_value lbm_cadr(lbm_value c)
Definition heap.c:997
lbm_uint lbm_flash_memory_usage(void)
Definition heap.c:1387
lbm_value lbm_set_u32(lbm_value v, uint32_t x)
Definition heap.c:135
static bool lbm_is_array_rw(lbm_value x)
Definition heap.h:947
lbm_value lbm_enc_u32(uint32_t x)
Definition heap.c:118
static bool lbm_is_symbol_true(lbm_value exp)
Definition heap.h:998
static bool lbm_is_continuation(lbm_value exp)
Definition heap.h:980
lbm_cons_t * lbm_heaps[2]
Definition heap.c:82
static bool lbm_is_symbol_eval(lbm_value exp)
Definition heap.h:1002
lbm_array_header_t * lbm_dec_array_rw(lbm_value val)
Definition heap.c:322
lbm_value lbm_enc_i32(int32_t x)
Definition heap.c:108
lbm_flash_status lbm_const_write(lbm_uint *tgt, lbm_uint val)
Definition heap.c:1360
static lbm_uint lbm_dec_ptr(lbm_value p)
Definition heap.h:696
void lbm_heap_new_freelist_length(void)
Definition heap.c:571
lbm_value lbm_enc_i64(int64_t x)
Definition heap.c:201
lbm_value lbm_enc_u64(uint64_t x)
Definition heap.c:211
static bool lbm_is_char(lbm_value x)
Definition heap.h:967
int lbm_gc_sweep_phase(void)
Definition heap.c:901
float lbm_dec_as_float(lbm_value val)
Definition heap.c:471
static bool lbm_is_special(lbm_value symrep)
Definition heap.h:971
static bool lbm_is_cons(lbm_value x)
Definition heap.h:885
void lbm_nil_freelist(void)
Definition heap.c:548
static lbm_value lbm_enc_cons_ptr(lbm_uint x)
Definition heap.h:692
int lbm_heap_explicit_free_array(lbm_value arr)
Definition heap.c:1252
lbm_uint lbm_get_gc_stack_size(void)
Definition heap.c:682
lbm_value lbm_list_drop(unsigned int n, lbm_value ls)
Definition heap.c:1098
lbm_uint lbm_heap_num_allocated(void)
Definition heap.c:663
void lbm_gc_mark_roots(lbm_uint *roots, lbm_uint num_roots)
Definition heap.c:892
lbm_value lbm_heap_allocate_list_init_va(unsigned int n, va_list valist)
Definition heap.c:634
static bool lbm_is_number(lbm_value x)
Definition heap.h:917
lbm_value lbm_heap_allocate_cell(lbm_type ptr_type, lbm_value car, lbm_value cdr)
Definition heap.c:596
static lbm_value lbm_enc_sym(lbm_uint s)
Definition heap.h:714
float lbm_dec_float(lbm_value x)
Definition heap.c:237
uint32_t lbm_dec_as_u32(lbm_value val)
Definition heap.c:372
lbm_value lbm_list_destructive_reverse(lbm_value list)
Definition heap.c:1037
lbm_flash_status lbm_allocate_const_cell(lbm_value *res)
Definition heap.c:1307
int64_t lbm_dec_i64(lbm_value x)
Definition heap.c:280
uint8_t lbm_dec_as_char(lbm_value a)
Definition heap.c:347
void lbm_gc_mark_phase(lbm_value root)
Definition heap.c:756
double lbm_dec_double(lbm_value x)
Definition heap.c:251
static bool lbm_is_list(lbm_value x)
Definition heap.h:1010
static bool lbm_is_macro(lbm_value exp)
Definition heap.h:984
lbm_heap_state_t lbm_heap_state
Definition heap.c:78
lbm_char_channel_t * lbm_dec_channel(lbm_value val)
Definition heap.c:330
#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