981#define ERROR_SYMBOL_MASK 0xFFFFFFF0
983#define ERROR_SYMBOL_MASK 0xFFFFFFFFFFFFFFF0
int32_t lbm_dec_as_i32(lbm_value val)
Definition heap.c:347
lbm_uint lbm_heap_size_bytes(void)
Definition heap.c:676
static bool lbm_is_error(lbm_value v)
Definition heap.h:987
lbm_flash_status write_const_cdr(lbm_value cell, lbm_value val)
Definition heap.c:1500
lbm_value lbm_enc_double(double x)
Definition heap.c:166
const uint8_t * lbm_heap_array_get_data_ro(lbm_value arr)
Definition heap.c:1318
lbm_value lbm_list_reverse(lbm_value list)
Definition heap.c:1109
int64_t lbm_dec_as_i64(lbm_value val)
Definition heap.c:372
void lbm_gc_mark_env(lbm_value)
Definition heap.c:888
static lbm_value lbm_enc_char(uint8_t x)
Definition heap.h:765
lbm_value lbm_list_append(lbm_value list1, lbm_value list2)
Definition heap.c:1172
lbm_flash_status write_const_car(lbm_value cell, lbm_value val)
Definition heap.c:1507
void lbm_heap_new_gc_time(lbm_uint dur)
lbm_flash_status
Definition heap.h:194
@ LBM_FLASH_FULL
Definition heap.h:196
@ LBM_FLASH_WRITE_ERROR
Definition heap.h:197
@ LBM_FLASH_WRITE_OK
Definition heap.h:195
int lbm_heap_allocate_lisp_array(lbm_value *res, lbm_uint size)
Definition heap.c:1276
lbm_value lbm_cddr(lbm_value c)
Definition heap.c:1040
static uint32_t lbm_dec_u32(lbm_value x)
Definition heap.h:798
lbm_uint lbm_dec_custom(lbm_value val)
Definition heap.c:290
#define ERROR_SYMBOL_MASK
Definition heap.h:981
static lbm_value lbm_set_ptr_type(lbm_value p, lbm_type t)
Definition heap.h:713
char * lbm_dec_str(lbm_value val)
Definition heap.c:238
static bool lbm_is_cons_rw(lbm_value x)
Definition heap.h:845
static lbm_uint lbm_dec_sym(lbm_value x)
Definition heap.h:781
static bool lbm_is_symbol_nil(lbm_value exp)
Definition heap.h:858
lbm_uint lbm_get_gc_stack_max(void)
Definition heap.c:684
lbm_array_header_t * lbm_dec_array_r(lbm_value val)
Definition heap.c:249
static bool lbm_is_list_rw(lbm_value x)
Definition heap.h:968
lbm_value lbm_enc_float(float x)
Definition heap.c:115
static lbm_uint lbm_dec_u(lbm_value x)
Definition heap.h:773
double lbm_dec_as_double(lbm_value val)
Definition heap.c:497
static bool lbm_is_array_r(lbm_value x)
Definition heap.h:882
void lbm_get_heap_state(lbm_heap_state_t *)
Definition heap.c:680
lbm_flash_status lbm_write_const_raw(lbm_uint *data, lbm_uint n, lbm_uint *res)
Definition heap.c:1468
static bool lbm_is_quoted_list(lbm_value x)
Definition heap.h:972
lbm_value lbm_index_list(lbm_value l, int32_t n)
Definition heap.c:1198
lbm_value lbm_cons(lbm_value car, lbm_value cdr)
Definition heap.c:993
void lbm_gc_lock(void)
Definition heap.c:86
lbm_int lbm_heap_array_get_size(lbm_value arr)
Definition heap.c:1308
lbm_value lbm_list_copy(int *m, lbm_value list)
Definition heap.c:1145
int lbm_lift_array(lbm_value *value, char *data, lbm_uint num_elt)
Definition heap.c:1280
static bool lbm_is_symbol(lbm_value exp)
Definition heap.h:948
int lbm_set_car(lbm_value c, lbm_value v)
Definition heap.c:1050
lbm_value lbm_cdr(lbm_value cons)
Definition heap.c:1032
static bool lbm_is_closure(lbm_value exp)
Definition heap.h:917
static uint8_t lbm_dec_char(lbm_value x)
Definition heap.h:777
void lbm_gc_mark_aux(lbm_uint *data, lbm_uint n)
Definition heap.c:904
static lbm_cons_t * lbm_dec_heap(lbm_value p)
Definition heap.h:708
static bool lbm_is_symbol_merror(lbm_value exp)
Definition heap.h:960
static lbm_int lbm_dec_i(lbm_value x)
Definition heap.h:769
static lbm_value lbm_enc_i(lbm_int x)
Definition heap.h:721
lbm_uint lbm_dec_as_uint(lbm_value val)
Definition heap.c:422
void lbm_gc_state_inc(void)
Definition heap.c:986
lbm_value lbm_heap_allocate_list(lbm_uint n)
Definition heap.c:613
int lbm_const_heap_init(const_heap_write_fun w_fun, lbm_const_heap_t *heap, lbm_uint *addr)
Definition heap.c:1407
lbm_flash_status lbm_allocate_const_raw(lbm_uint nwords, lbm_uint *res)
Definition heap.c:1455
static bool lbm_is_lisp_array_rw(lbm_value x)
Definition heap.h:898
static lbm_type lbm_type_of_functional(lbm_value x)
Definition heap.h:687
static lbm_value lbm_enc_u(lbm_uint x)
Definition heap.h:725
static bool lbm_is_constant(lbm_value x)
Definition heap.h:835
static bool lbm_heap_array_valid(lbm_value arr)
Definition heap.h:874
lbm_value lbm_caar(lbm_value c)
Definition heap.c:1009
static bool lbm_is_channel(lbm_value x)
Definition heap.h:903
lbm_int lbm_dec_as_int(lbm_value val)
Definition heap.c:447
int lbm_heap_allocate_array(lbm_value *res, lbm_uint size)
Definition heap.c:1272
lbm_uint lbm_list_length(lbm_value c)
Definition heap.c:1083
lbm_uint lbm_size_of(lbm_type t)
Definition heap.c:1374
uint64_t lbm_dec_u64(lbm_value x)
Definition heap.c:212
bool(* const_heap_write_fun)(lbm_uint w, lbm_uint ix)
Definition heap.h:233
void lbm_gc_unlock(void)
Definition heap.c:88
static lbm_uint lbm_dec_cons_cell_ptr(lbm_value p)
Definition heap.h:703
lbm_value lbm_heap_allocate_list_init(unsigned int n,...)
Definition heap.c:661
static bool lbm_is_lisp_array_r(lbm_value x)
Definition heap.h:893
lbm_uint lbm_dec_raw(lbm_value v)
static lbm_uint lbm_heap_num_free(void)
Definition heap.h:289
lbm_uint lbm_heap_size(void)
Definition heap.c:672
static bool lbm_is_match_binder(lbm_value exp)
Definition heap.h:935
static lbm_type lbm_type_of(lbm_value x)
Definition heap.h:682
static int32_t lbm_dec_i32(lbm_value x)
Definition heap.h:812
static bool lbm_is_ptr(lbm_value x)
Definition heap.h:831
int lbm_set_cdr(lbm_value c, lbm_value v)
Definition heap.c:1061
int lbm_heap_init(lbm_cons_t *addr, lbm_uint num_cells, lbm_uint gc_stack_size)
Definition heap.c:578
static bool lbm_is_comma_qualified_symbol(lbm_value exp)
Definition heap.h:941
static lbm_cons_t * lbm_ref_cell(lbm_value addr)
Definition heap.h:994
uint64_t lbm_dec_as_u64(lbm_value val)
Definition heap.c:397
lbm_value lbm_car(lbm_value cons)
Definition heap.c:997
lbm_value lbm_cadr(lbm_value c)
Definition heap.c:1021
lbm_uint lbm_flash_memory_usage(void)
Definition heap.c:1514
static bool lbm_is_array_rw(lbm_value x)
Definition heap.h:887
lbm_value lbm_enc_u32(uint32_t x)
Definition heap.c:105
static bool lbm_is_symbol_true(lbm_value exp)
Definition heap.h:952
static bool lbm_is_continuation(lbm_value exp)
Definition heap.h:923
lbm_cons_t * lbm_heaps[2]
Definition heap.c:70
static bool lbm_is_symbol_eval(lbm_value exp)
Definition heap.h:956
lbm_array_header_t * lbm_dec_array_rw(lbm_value val)
Definition heap.c:257
int lbm_set_car_and_cdr(lbm_value c, lbm_value car_val, lbm_value cdr_val)
Definition heap.c:1071
lbm_value lbm_enc_i32(int32_t x)
Definition heap.c:95
lbm_flash_status lbm_const_write(lbm_uint *tgt, lbm_uint val)
Definition heap.c:1487
static lbm_uint lbm_dec_ptr(lbm_value p)
Definition heap.h:697
void lbm_heap_new_freelist_length(void)
Definition heap.c:571
lbm_value lbm_enc_i64(int64_t x)
Definition heap.c:146
lbm_value lbm_enc_u64(uint64_t x)
Definition heap.c:156
static bool lbm_is_char(lbm_value x)
Definition heap.h:908
int lbm_gc_sweep_phase(void)
Definition heap.c:925
float lbm_dec_as_float(lbm_value val)
Definition heap.c:472
static bool lbm_is_special(lbm_value symrep)
Definition heap.h:912
unsigned int lbm_list_length_pred(lbm_value c, bool *pres, bool(*pred)(lbm_value))
Definition heap.c:1095
static bool lbm_is_cons(lbm_value x)
Definition heap.h:854
void lbm_nil_freelist(void)
Definition heap.c:548
static lbm_value lbm_enc_cons_ptr(lbm_uint x)
Definition heap.h:693
int lbm_heap_explicit_free_array(lbm_value arr)
Definition heap.c:1354
lbm_uint lbm_get_gc_stack_size(void)
Definition heap.c:688
lbm_value lbm_list_drop(unsigned int n, lbm_value ls)
Definition heap.c:1188
uint8_t * lbm_heap_array_get_data_rw(lbm_value arr)
Definition heap.c:1327
lbm_uint lbm_heap_num_allocated(void)
Definition heap.c:669
void lbm_gc_mark_roots(lbm_uint *roots, lbm_uint num_roots)
Definition heap.c:918
lbm_value lbm_heap_allocate_list_init_va(unsigned int n, va_list valist)
Definition heap.c:637
static bool lbm_is_number(lbm_value x)
Definition heap.h:866
lbm_value lbm_heap_allocate_cell(lbm_type ptr_type, lbm_value car, lbm_value cdr)
Definition heap.c:597
static lbm_value lbm_enc_sym(lbm_uint s)
Definition heap.h:717
float lbm_dec_float(lbm_value x)
Definition heap.c:182
uint32_t lbm_dec_as_u32(lbm_value val)
Definition heap.c:323
lbm_value lbm_list_destructive_reverse(lbm_value list)
Definition heap.c:1128
lbm_flash_status lbm_allocate_const_cell(lbm_value *res)
Definition heap.c:1434
int64_t lbm_dec_i64(lbm_value x)
Definition heap.c:225
lbm_array_header_t * lbm_dec_lisp_array_rw(lbm_value val)
Definition heap.c:273
uint8_t lbm_dec_as_char(lbm_value a)
Definition heap.c:298
void lbm_gc_mark_phase(lbm_value root)
Definition heap.c:804
double lbm_dec_double(lbm_value x)
Definition heap.c:196
static bool lbm_is_list(lbm_value x)
Definition heap.h:964
static bool lbm_is_macro(lbm_value exp)
Definition heap.h:929
lbm_array_header_t * lbm_dec_lisp_array_r(lbm_value val)
Definition heap.c:265
lbm_heap_state_t lbm_heap_state
Definition heap.c:66
lbm_char_channel_t * lbm_dec_channel(lbm_value val)
Definition heap.c:281
#define ENC_SYM_CONT
Definition lbm_defines.h:489
#define LBM_TYPE_ARRAY
Definition lbm_defines.h:52
#define ENC_SYM_COMMA
Definition lbm_defines.h:460
#define LBM_PTR_BIT
Definition lbm_defines.h:32
#define LBM_LOW_RESERVED_BITS
Definition lbm_defines.h:82
#define LBM_CONS_TYPE_MASK
Definition lbm_defines.h:62
#define ENC_SYM_MERROR
Definition lbm_defines.h:412
#define LBM_PTR_TO_CONSTANT_BIT
Definition lbm_defines.h:38
#define LBM_TYPE_CONS
Definition lbm_defines.h:43
#define LBM_TYPE_CHANNEL
Definition lbm_defines.h:54
#define SPECIAL_SYMBOLS_END
Definition lbm_defines.h:386
#define LBM_TYPE_U
Definition lbm_defines.h:81
#define LBM_NUMBER_MASK
Definition lbm_defines.h:74
#define LBM_TYPE_I
Definition lbm_defines.h:80
#define ENC_SYM_EVAL
Definition lbm_defines.h:506
#define LBM_PTR_TO_CONSTANT_MASK
Definition lbm_defines.h:39
#define ENC_SYM_CLOSURE
Definition lbm_defines.h:490
#define LBM_PTR_VAL_MASK
Definition lbm_defines.h:33
#define ENC_SYM_CHANNEL_TYPE
Definition lbm_defines.h:428
#define LBM_PTR_TYPE_MASK
Definition lbm_defines.h:34
#define LBM_TYPE_LISPARRAY
Definition lbm_defines.h:56
#define LBM_TYPE_CHAR
Definition lbm_defines.h:78
#define ENC_SYM_QUOTE
Definition lbm_defines.h:475
#define ENC_SYM_MACRO
Definition lbm_defines.h:488
#define LBM_VAL_SHIFT
Definition lbm_defines.h:29
#define LBM_ADDRESS_SHIFT
Definition lbm_defines.h:28
#define LBM_VAL_TYPE_MASK
Definition lbm_defines.h:72
#define ENC_SYM_TRUE
Definition lbm_defines.h:405
#define LBM_PTR_TO_CONSTANT_SHIFT
Definition lbm_defines.h:40
#define LBM_TYPE_SYMBOL
Definition lbm_defines.h:77
#define ENC_SYM_MATCH_ANY
Definition lbm_defines.h:437
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:205
lbm_value car
Definition heap.h:204
lbm_uint size
Definition heap.h:238
lbm_uint * heap
Definition heap.h:236
lbm_uint next
Definition heap.h:237
lbm_uint gc_least_free
Definition heap.h:226
lbm_uint heap_bytes
Definition heap.h:217
lbm_uint gc_recovered
Definition heap.h:224
lbm_uint gc_marked
Definition heap.h:223
lbm_uint num_alloc_arrays
Definition heap.h:220
lbm_uint num_alloc
Definition heap.h:219
lbm_uint gc_recovered_arrays
Definition heap.h:225
lbm_value freelist
Definition heap.h:213
lbm_stack_t gc_stack
Definition heap.h:214
lbm_uint heap_size
Definition heap.h:216
lbm_cons_t * heap
Definition heap.h:212
lbm_uint gc_last_free
Definition heap.h:227
lbm_uint gc_num
Definition heap.h:222