Added add_global2

This commit is contained in:
Justin Ethier 2020-01-27 15:26:53 -05:00
parent 98fb53aa51
commit 4fb6530056
2 changed files with 27 additions and 21 deletions

View file

@ -790,6 +790,7 @@ object register_library(const char *name);
/**@{*/ /**@{*/
extern list global_table; extern list global_table;
void add_global(object * glo); void add_global(object * glo);
void add_global2(object identifier, object * glo);
void Cyc_set_globals_changed(gc_thread_data *thd); void Cyc_set_globals_changed(gc_thread_data *thd);
/**@}*/ /**@}*/

View file

@ -374,27 +374,27 @@ static bool ht_insert(ck_ht_t * ht, const void *key, const void *value)
return ck_ht_put_spmc(ht, h, &entry); return ck_ht_put_spmc(ht, h, &entry);
} }
void ht_test() { //void ht_test() {
symbol_type ka = {{0}, symbol_tag, "sym a"}; // symbol_type ka = {{0}, symbol_tag, "sym a"};
symbol_type kb = {{0}, symbol_tag, "sym b"}; // symbol_type kb = {{0}, symbol_tag, "sym b"};
symbol_type kc = {{0}, symbol_tag, "sym c"}; // symbol_type kc = {{0}, symbol_tag, "sym c"};
object v1 = obj_int2obj(1); // object v1 = obj_int2obj(1);
object v2 = obj_int2obj(2); // object v2 = obj_int2obj(2);
object v3 = obj_int2obj(3); // object v3 = obj_int2obj(3);
bool result; // bool result;
//
printf("RUNNING HT DEBUG!!!\n"); // printf("RUNNING HT DEBUG!!!\n");
result = ht_insert(&globals_ht, &ka, v1); // result = ht_insert(&globals_ht, &ka, v1);
result = ht_insert(&globals_ht, &kb, v2); // result = ht_insert(&globals_ht, &kb, v2);
result = ht_insert(&globals_ht, &kc, v3); // result = ht_insert(&globals_ht, &kc, v3);
//
object value = ht_get(&globals_ht, &ka); // object value = ht_get(&globals_ht, &ka);
printf("got value 1 %lu\n", obj_obj2int(value)); // printf("got value 1 %lu\n", obj_obj2int(value));
value = ht_get(&globals_ht, &kb); // value = ht_get(&globals_ht, &kb);
printf("got value 2 %lu\n", obj_obj2int(value)); // printf("got value 2 %lu\n", obj_obj2int(value));
value = ht_get(&globals_ht, &kc); // value = ht_get(&globals_ht, &kc);
printf("got value 3 %lu\n", obj_obj2int(value)); // printf("got value 3 %lu\n", obj_obj2int(value));
} //}
// End new hashset functions // End new hashset functions
/** /**
@ -570,6 +570,11 @@ void add_global(object * glo)
// pthread_mutex_unlock(&symbol_table_lock); // pthread_mutex_unlock(&symbol_table_lock);
} }
void add_global2(object identifier, object * glo)
{
global_table = malloc_make_pair(mcvar(glo), global_table);
}
void debug_dump_globals() void debug_dump_globals()
{ {
list l = global_table; list l = global_table;