mirror of
https://github.com/justinethier/cyclone.git
synced 2025-05-19 05:39:17 +02:00
Set the 'immutable' field when constructing objs
This commit is contained in:
parent
d96231c7dd
commit
3f6e9655bd
1 changed files with 20 additions and 0 deletions
20
runtime.c
20
runtime.c
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue