Set the 'immutable' field when constructing objs

This commit is contained in:
Justin Ethier 2019-05-01 13:37:02 -04:00
parent d96231c7dd
commit 3f6e9655bd

View file

@ -189,6 +189,7 @@ void pack_env_variables(void *data, object k)
svar->hdr.mark = gc_color_red;
svar->hdr.grayed = 0;
svar->hdr.immutable = 0;
svar->tag = string_tag;
svar->len = eqpos - e;
svar->str = alloca(sizeof(char) * (svar->len));
@ -201,6 +202,7 @@ void pack_env_variables(void *data, object k)
}
sval->hdr.mark = gc_color_red;
sval->hdr.grayed = 0;
sval->hdr.immutable = 0;
sval->tag = string_tag;
sval->len = strlen(eqpos);
svar->num_cp = Cyc_utf8_count_code_points((uint8_t *)eqpos);
@ -1315,6 +1317,7 @@ object Cyc_fast_vector_2(object ptr, object a1, object a2)
vector_2_type *v = (vector_2_type *)ptr;
v->v.hdr.mark = gc_color_red;
v->v.hdr.grayed = 0;
v->v.hdr.immutable = 0;
v->v.tag = vector_tag;
v->v.num_elements = 2;
v->v.elements = v->arr;
@ -1328,6 +1331,7 @@ object Cyc_fast_vector_3(object ptr, object a1, object a2, object a3)
vector_3_type *v = (vector_3_type *)ptr;
v->v.hdr.mark = gc_color_red;
v->v.hdr.grayed = 0;
v->v.hdr.immutable = 0;
v->v.tag = vector_tag;
v->v.num_elements = 3;
v->v.elements = v->arr;
@ -1342,6 +1346,7 @@ object Cyc_fast_vector_4(object ptr, object a1, object a2, object a3, object a4)
vector_4_type *v = (vector_4_type *)ptr;
v->v.hdr.mark = gc_color_red;
v->v.hdr.grayed = 0;
v->v.hdr.immutable = 0;
v->v.tag = vector_tag;
v->v.num_elements = 4;
v->v.elements = v->arr;
@ -2630,6 +2635,7 @@ object Cyc_command_line_arguments(void *data, object cont)
memcpy(ps, &s, sizeof(string_type));
((list) pl)->hdr.mark = gc_color_red;
((list) pl)->hdr.grayed = 0;
((list) pl)->hdr.immutable = 0;
((list) pl)->tag = pair_tag;
((list) pl)->pair_car = ps;
((list) pl)->pair_cdr = lis;
@ -2669,6 +2675,7 @@ object Cyc_make_vector(void *data, object cont, int argc, object len, ...)
&heap_grown);
((vector) v)->hdr.mark = ((gc_thread_data *)data)->gc_alloc_color;
((vector) v)->hdr.grayed = 0;
((vector) v)->hdr.immutable = 0;
((vector) v)->tag = vector_tag;
((vector) v)->num_elements = ulen;
((vector) v)->elements = (object *)(((char *)v) + sizeof(vector_type));
@ -2683,6 +2690,7 @@ object Cyc_make_vector(void *data, object cont, int argc, object len, ...)
v = alloca(sizeof(vector_type));
((vector) v)->hdr.mark = gc_color_red;
((vector) v)->hdr.grayed = 0;
((vector) v)->hdr.immutable = 0;
((vector) v)->tag = vector_tag;
((vector) v)->num_elements = ulen;
((vector) v)->elements = NULL;
@ -2722,6 +2730,7 @@ object Cyc_make_bytevector(void *data, object cont, int argc, object len, ...)
&heap_grown);
((bytevector) bv)->hdr.mark = ((gc_thread_data *)data)->gc_alloc_color;
((bytevector) bv)->hdr.grayed = 0;
((bytevector) bv)->hdr.immutable = 0;
((bytevector) bv)->tag = bytevector_tag;
((bytevector) bv)->len = length;
((bytevector) bv)->data = (char *)(((char *)bv) + sizeof(bytevector_type));
@ -2729,6 +2738,7 @@ object Cyc_make_bytevector(void *data, object cont, int argc, object len, ...)
bv = alloca(sizeof(bytevector_type));
((bytevector) bv)->hdr.mark = gc_color_red;
((bytevector) bv)->hdr.grayed = 0;
((bytevector) bv)->hdr.immutable = 0;
((bytevector) bv)->tag = bytevector_tag;
((bytevector) bv)->len = length;
((bytevector) bv)->data = alloca(sizeof(char) * length);
@ -2855,6 +2865,7 @@ object Cyc_bytevector_copy(void *data, object cont, object bv, object start,
&heap_grown);
((bytevector) result)->hdr.mark = ((gc_thread_data *)data)->gc_alloc_color;
((bytevector) result)->hdr.grayed = 0;
((bytevector) result)->hdr.immutable = 0;
((bytevector) result)->tag = bytevector_tag;
((bytevector) result)->len = len;
((bytevector) result)->data = (char *)(((char *)result) + sizeof(bytevector_type));
@ -2936,6 +2947,7 @@ object Cyc_string2utf8(void *data, object cont, object str, object start,
&heap_grown);
((bytevector) bv)->hdr.mark = ((gc_thread_data *)data)->gc_alloc_color;
((bytevector) bv)->hdr.grayed = 0;
((bytevector) bv)->hdr.immutable = 0;
((bytevector) bv)->tag = bytevector_tag;
((bytevector) bv)->len = len;
((bytevector) bv)->data = (char *)(((char *)bv) + sizeof(bytevector_type));
@ -2979,6 +2991,7 @@ object Cyc_string2utf8(void *data, object cont, object str, object start,
&heap_grown);
((bytevector) bv)->hdr.mark = ((gc_thread_data *)data)->gc_alloc_color;
((bytevector) bv)->hdr.grayed = 0;
((bytevector) bv)->hdr.immutable = 0;
((bytevector) bv)->tag = bytevector_tag;
((bytevector) bv)->len = len;
((bytevector) bv)->data = (char *)(((char *)bv) + sizeof(bytevector_type));
@ -3066,6 +3079,7 @@ object Cyc_list2vector(void *data, object cont, object l)
&heap_grown);
((vector) v)->hdr.mark = ((gc_thread_data *)data)->gc_alloc_color;
((vector) v)->hdr.grayed = 0;
((vector) v)->hdr.immutable = 0;
((vector) v)->tag = vector_tag;
((vector) v)->num_elements = len;
((vector) v)->elements = (object *)(((char *)v) + sizeof(vector_type));
@ -3081,6 +3095,7 @@ object Cyc_list2vector(void *data, object cont, object l)
v = alloca(sizeof(vector_type));
((vector) v)->hdr.mark = gc_color_red;
((vector) v)->hdr.grayed = 0;
((vector) v)->hdr.immutable = 0;
((vector) v)->tag = vector_tag;
((vector) v)->num_elements = len;
((vector) v)->elements =
@ -4194,6 +4209,7 @@ list malloc_make_pair(object a, object d)
pair_type *c = malloc(sizeof(pair_type));
c->hdr.mark = gc_color_red;
c->hdr.grayed = 0;
c->hdr.immutable = 0;
c->tag = pair_tag;
c->pair_car = a;
c->pair_cdr = d;
@ -4205,6 +4221,7 @@ cvar_type *mcvar(object * var)
cvar_type *c = malloc(sizeof(cvar_type));
c->hdr.mark = gc_color_red;
c->hdr.grayed = 0;
c->hdr.immutable = 0;
c->tag = cvar_tag;
c->pvar = var;
return c;
@ -5252,6 +5269,7 @@ void Cyc_apply(void *data, int argc, closure cont, object prim, ...)
tmp = va_arg(ap, object);
args[i].hdr.mark = gc_color_red;
args[i].hdr.grayed = 0;
args[i].hdr.immutable = 0;
args[i].tag = pair_tag;
args[i].pair_car = tmp;
args[i].pair_cdr = (i == (argc - 1)) ? NULL : &args[i + 1];
@ -5286,6 +5304,7 @@ void Cyc_apply_from_buf(void *data, int argc, object prim, object * buf)
for (i = 1; i < argc; i++) {
args[i - 1].hdr.mark = gc_color_red;
args[i - 1].hdr.grayed = 0;
args[i - 1].hdr.immutable = 0;
args[i - 1].tag = pair_tag;
args[i - 1].pair_car = buf[i];
args[i - 1].pair_cdr = (i == (argc - 1)) ? NULL : &args[i];
@ -6085,6 +6104,7 @@ void *gc_alloc_pair(gc_thread_data *data, object head, object tail)
pair_type tmp;
tmp.hdr.mark = gc_color_red;
tmp.hdr.grayed = 0;
tmp.hdr.immutable = 0;
tmp.tag = pair_tag;
tmp.pair_car = head;
tmp.pair_cdr = tail;