mirror of https://github.com/rusefi/bldc.git
Squashed 'lispBM/lispBM/' changes from cf1214d8..dd848f86
dd848f86 small readability refactor 3853cb02 removing a dead-store in qq_expand.c 8f26a7b0 Refactoring symrepr.c for readability and code-reuse git-subtree-dir: lispBM/lispBM git-subtree-split: dd848f86f03698c9f34097d0e37d14841e8fcfb3
This commit is contained in:
parent
64aeaa0429
commit
842f70e983
|
@ -3042,11 +3042,10 @@ static void evaluation_step(void){
|
|||
|
||||
if (decoded_k < NUM_CONTINUATIONS) {
|
||||
continuations[decoded_k](ctx);
|
||||
return;
|
||||
} else {
|
||||
error_ctx(ENC_SYM_FATAL_ERROR);
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
lbm_uint exp_type = lbm_type_of(ctx->curr_exp);
|
||||
|
@ -3056,10 +3055,7 @@ static void evaluation_step(void){
|
|||
if (eval_symbol(ctx, &s)) {
|
||||
ctx->app_cont = true;
|
||||
ctx->r = s;
|
||||
return;
|
||||
}
|
||||
|
||||
if (dynamic_load_callback) {
|
||||
} else if (dynamic_load_callback) {
|
||||
dynamic_load(ctx);
|
||||
} else {
|
||||
error_ctx(ENC_SYM_NOT_FOUND);
|
||||
|
|
|
@ -131,7 +131,7 @@ lbm_value append(lbm_value front, lbm_value back) {
|
|||
*/
|
||||
|
||||
lbm_value qq_expand_list(lbm_value l) {
|
||||
lbm_value res = ENC_SYM_NIL;
|
||||
lbm_value res;
|
||||
lbm_value car_val;
|
||||
lbm_value cdr_val;
|
||||
|
||||
|
|
212
src/symrepr.c
212
src/symrepr.c
|
@ -285,18 +285,10 @@ int lbm_get_symbol_by_name(char *name, lbm_uint* id) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
int lbm_add_symbol(char *name, lbm_uint* id) {
|
||||
size_t n = 0;
|
||||
|
||||
n = strlen(name) + 1;
|
||||
static bool store_symbol_name(char *name, lbm_uint *res) {
|
||||
size_t n = strlen(name) + 1;
|
||||
if (n == 1) return 0; // failure if empty symbol
|
||||
|
||||
lbm_uint *m = lbm_memory_allocate(3);
|
||||
|
||||
if (m == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
char *symbol_name_storage = NULL;
|
||||
lbm_uint alloc_size;
|
||||
if (n % sizeof(lbm_uint) == 0) {
|
||||
|
@ -307,17 +299,23 @@ int lbm_add_symbol(char *name, lbm_uint* id) {
|
|||
|
||||
symbol_name_storage = (char *)lbm_memory_allocate(alloc_size);
|
||||
|
||||
if (symbol_name_storage == NULL) {
|
||||
lbm_memory_free(m);
|
||||
return 0;
|
||||
}
|
||||
if (symbol_name_storage == NULL) return false;
|
||||
|
||||
symbol_table_size_list += 3;
|
||||
symbol_table_size_strings += alloc_size;
|
||||
|
||||
strcpy(symbol_name_storage, name);
|
||||
|
||||
m[NAME] = (lbm_uint)symbol_name_storage;
|
||||
*res = (lbm_uint)symbol_name_storage;
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool add_symbol_to_symtab(lbm_uint name, lbm_uint id) {
|
||||
lbm_uint *m = lbm_memory_allocate(3);
|
||||
|
||||
if (m == NULL) return false;
|
||||
|
||||
symbol_table_size_list += 3;
|
||||
m[NAME] = name;
|
||||
|
||||
if (symlist == NULL) {
|
||||
m[NEXT] = (lbm_uint) NULL;
|
||||
|
@ -326,8 +324,33 @@ int lbm_add_symbol(char *name, lbm_uint* id) {
|
|||
m[NEXT] = (lbm_uint) symlist;
|
||||
symlist = m;
|
||||
}
|
||||
m[ID] = next_symbol_id++;
|
||||
*id = m[ID];
|
||||
m[ID] =id;
|
||||
return true;
|
||||
}
|
||||
|
||||
int lbm_add_symbol(char *name, lbm_uint* id) {
|
||||
|
||||
lbm_uint symbol_name_storage;
|
||||
if (!store_symbol_name(name, &symbol_name_storage)) return 0;
|
||||
|
||||
if (!add_symbol_to_symtab(symbol_name_storage, next_symbol_id)) {
|
||||
lbm_memory_free((lbm_uint*)symbol_name_storage);
|
||||
return 0;
|
||||
}
|
||||
|
||||
*id = next_symbol_id ++;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int lbm_add_symbol_const(char *name, lbm_uint* id) {
|
||||
|
||||
if (!add_symbol_to_symtab((lbm_uint)name, next_symbol_id)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
*id = next_symbol_id ++;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -340,179 +363,60 @@ int lbm_str_to_symbol(char *name, lbm_uint *sym_id) {
|
|||
}
|
||||
|
||||
int lbm_add_variable_symbol(char *name, lbm_uint* id) {
|
||||
if (strlen(name) == 0) return 0; // failure if empty symbol
|
||||
|
||||
if (next_variable_symbol_id >= VARIABLE_SYMBOLS_END) return 0;
|
||||
size_t n = 0;
|
||||
lbm_uint symbol_name_storage;
|
||||
if (!store_symbol_name(name, &symbol_name_storage)) return 0;
|
||||
|
||||
n = strlen(name) + 1;
|
||||
if (n == 1) return 0; // failure if empty symbol
|
||||
|
||||
lbm_uint *m = lbm_memory_allocate(3);
|
||||
|
||||
if (m == NULL) {
|
||||
if (!add_symbol_to_symtab(symbol_name_storage, next_variable_symbol_id)) {
|
||||
lbm_memory_free((lbm_uint*)symbol_name_storage);
|
||||
return 0;
|
||||
}
|
||||
|
||||
char *symbol_name_storage = NULL;
|
||||
lbm_uint alloc_size;
|
||||
if (n % sizeof(lbm_uint) == 0) {
|
||||
alloc_size = n/(sizeof(lbm_uint));
|
||||
} else {
|
||||
alloc_size = (n/(sizeof(lbm_uint))) + 1;
|
||||
}
|
||||
*id = next_variable_symbol_id ++;
|
||||
|
||||
symbol_name_storage = (char *)lbm_memory_allocate(alloc_size);
|
||||
|
||||
if (symbol_name_storage == NULL) {
|
||||
lbm_memory_free(m);
|
||||
return 0;
|
||||
}
|
||||
|
||||
symbol_table_size_list += 3;
|
||||
symbol_table_size_strings += alloc_size;
|
||||
|
||||
strcpy(symbol_name_storage, name);
|
||||
|
||||
m[NAME] = (lbm_uint)symbol_name_storage;
|
||||
|
||||
if (symlist == NULL) {
|
||||
m[NEXT] = (lbm_uint) NULL;
|
||||
symlist = m;
|
||||
} else {
|
||||
m[NEXT] = (lbm_uint) symlist;
|
||||
symlist = m;
|
||||
}
|
||||
m[ID] = next_variable_symbol_id++;
|
||||
*id = m[ID];
|
||||
return 1;
|
||||
}
|
||||
|
||||
int lbm_add_variable_symbol_const(char *name, lbm_uint* id) {
|
||||
if (strlen(name) == 0) return 0; // failure if empty symbol
|
||||
|
||||
if (next_variable_symbol_id >= VARIABLE_SYMBOLS_END) return 0;
|
||||
size_t n = 0;
|
||||
|
||||
n = strlen(name) + 1;
|
||||
if (n == 1) return 0; // failure if empty symbol
|
||||
|
||||
lbm_uint *m = lbm_memory_allocate(3);
|
||||
|
||||
if (m == NULL) {
|
||||
if (!add_symbol_to_symtab((lbm_uint)name, next_variable_symbol_id)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
symbol_table_size_list += 3;
|
||||
*id = next_variable_symbol_id ++;
|
||||
|
||||
m[NAME] = (lbm_uint)name;
|
||||
|
||||
if (symlist == NULL) {
|
||||
m[NEXT] = (lbm_uint) NULL;
|
||||
symlist = m;
|
||||
} else {
|
||||
m[NEXT] = (lbm_uint) symlist;
|
||||
symlist = m;
|
||||
}
|
||||
m[ID] = next_variable_symbol_id++;
|
||||
*id = m[ID];
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
int lbm_add_symbol_const(char *name, lbm_uint* id) {
|
||||
if (strlen(name) == 0) return 0; // failure if empty symbol
|
||||
|
||||
lbm_uint *m = lbm_memory_allocate(3);
|
||||
|
||||
if (m == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
symbol_table_size_list += 3;
|
||||
|
||||
m[NAME] = (lbm_uint)name;
|
||||
|
||||
if (symlist == NULL) {
|
||||
m[NEXT] = (lbm_uint) NULL;
|
||||
symlist = m;
|
||||
} else {
|
||||
m[NEXT] = (lbm_uint) symlist;
|
||||
symlist = m;
|
||||
}
|
||||
m[ID] = next_symbol_id++;
|
||||
*id = m[ID];
|
||||
return 1;
|
||||
}
|
||||
|
||||
int lbm_add_extension_symbol(char *name, lbm_uint* id) {
|
||||
size_t n = 0;
|
||||
n = strlen(name) + 1;
|
||||
|
||||
if (n == 1) return 0; // failure if empty symbol
|
||||
if (next_extension_symbol_id >= EXTENSION_SYMBOLS_END) return 0;
|
||||
lbm_uint symbol_name_storage;
|
||||
if (!store_symbol_name(name, &symbol_name_storage)) return 0;
|
||||
|
||||
lbm_uint *m = lbm_memory_allocate(3);
|
||||
|
||||
if (m == NULL) {
|
||||
if (!add_symbol_to_symtab(symbol_name_storage, next_extension_symbol_id)) {
|
||||
lbm_memory_free((lbm_uint*)symbol_name_storage);
|
||||
return 0;
|
||||
}
|
||||
|
||||
char *symbol_name_storage = NULL;
|
||||
lbm_uint alloc_size;
|
||||
if (n % sizeof(lbm_uint) == 0) {
|
||||
alloc_size = n/(sizeof(lbm_uint));
|
||||
} else {
|
||||
alloc_size = (n/(sizeof(lbm_uint))) + 1;
|
||||
}
|
||||
*id = next_extension_symbol_id ++;
|
||||
|
||||
symbol_name_storage = (char *)lbm_memory_allocate(alloc_size);
|
||||
|
||||
if (symbol_name_storage == NULL) {
|
||||
lbm_memory_free(m);
|
||||
return 0;
|
||||
}
|
||||
|
||||
symbol_table_size_list += 3;
|
||||
symbol_table_size_strings += alloc_size;
|
||||
|
||||
strcpy(symbol_name_storage, name);
|
||||
|
||||
m[NAME] = (lbm_uint)symbol_name_storage;
|
||||
|
||||
if (symlist == NULL) {
|
||||
m[NEXT] = (lbm_uint) NULL;
|
||||
symlist = m;
|
||||
} else {
|
||||
m[NEXT] = (lbm_uint) symlist;
|
||||
symlist = m;
|
||||
}
|
||||
m[ID] = next_extension_symbol_id++;
|
||||
*id = m[ID];
|
||||
return 1;
|
||||
}
|
||||
|
||||
int lbm_add_extension_symbol_const(char *name, lbm_uint* id) {
|
||||
if (strlen(name) == 0) return 0; // failure if empty symbol
|
||||
|
||||
if (next_extension_symbol_id >= EXTENSION_SYMBOLS_END) return 0;
|
||||
|
||||
lbm_uint *m = lbm_memory_allocate(3);
|
||||
|
||||
if (m == NULL) {
|
||||
if (!add_symbol_to_symtab((lbm_uint)name, next_extension_symbol_id)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
symbol_table_size_list += 3;
|
||||
*id = next_extension_symbol_id ++;
|
||||
|
||||
m[NAME] = (lbm_uint)name;
|
||||
|
||||
if (symlist == NULL) {
|
||||
m[NEXT] = (lbm_uint) NULL;
|
||||
symlist = m;
|
||||
} else {
|
||||
m[NEXT] = (lbm_uint) symlist;
|
||||
symlist = m;
|
||||
}
|
||||
m[ID] = next_extension_symbol_id++;
|
||||
*id = m[ID];
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue