From 465167445f63e481bec5b5cd24d8a82fd214c7e6 Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Tue, 30 Apr 2019 17:51:53 -0400 Subject: [PATCH] Initialize the 'immutable' field --- include/cyclone/types.h | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/include/cyclone/types.h b/include/cyclone/types.h index dafc0cb0..d0285131 100644 --- a/include/cyclone/types.h +++ b/include/cyclone/types.h @@ -613,6 +613,7 @@ typedef cvar_type *cvar; cvar_type n; \ n.hdr.mark = gc_color_red; \ n.hdr.grayed = 0; \ + n.hdr.immutable = 0; \ n.tag = cvar_tag; \ n.pvar = v; @@ -635,6 +636,7 @@ typedef c_opaque_type *c_opaque; c_opaque_type var; \ var.hdr.mark = gc_color_red; \ var.hdr.grayed = 0; \ + var.hdr.immutable = 0; \ var.tag = c_opaque_tag; \ var.ptr = p; @@ -839,6 +841,7 @@ typedef struct { { int len = strlen(s); \ cs.hdr.mark = gc_color_red; \ cs.hdr.grayed = 0; \ + cs.hdr.immutable = 0; \ cs.tag = string_tag; \ cs.num_cp = len; \ cs.len = len; \ @@ -853,6 +856,7 @@ typedef struct { { int len = length; \ cs.hdr.mark = gc_color_red; \ cs.hdr.grayed = 0; \ + cs.hdr.immutable = 0; \ cs.tag = string_tag; cs.len = len; \ cs.num_cp = len; \ cs.str = alloca(sizeof(char) * (len + 1)); \ @@ -864,7 +868,7 @@ typedef struct { * No allocation is done for the given C string. */ #define make_string_noalloc(cs, s, length) string_type cs; \ -{ cs.hdr.mark = gc_color_red; cs.hdr.grayed = 0; \ +{ cs.hdr.mark = gc_color_red; cs.hdr.grayed = 0; cs.hdr.immutable = 0; \ cs.tag = string_tag; cs.len = length; \ cs.num_cp = length; \ cs.str = s; } @@ -874,6 +878,7 @@ typedef struct { { int len = strlen(s); \ cs.hdr.mark = gc_color_red; \ cs.hdr.grayed = 0; \ + cs.hdr.immutable = 0; \ cs.tag = string_tag; \ cs.num_cp = Cyc_utf8_count_code_points((uint8_t *)s); \ if (cs.num_cp < 0) { \ @@ -891,6 +896,7 @@ typedef struct { { int len = length; \ cs.hdr.mark = gc_color_red; \ cs.hdr.grayed = 0; \ + cs.hdr.immutable = 0; \ cs.tag = string_tag; cs.len = len; \ cs.num_cp = num_code_points; \ cs.str = alloca(sizeof(char) * (len + 1)); \ @@ -902,7 +908,7 @@ typedef struct { * No allocation is done for the given C string. */ #define make_utf8_string_noalloc(cs, s, length) string_type cs; \ -{ cs.hdr.mark = gc_color_red; cs.hdr.grayed = 0; \ +{ cs.hdr.mark = gc_color_red; cs.hdr.grayed = 0; cs.hdr.immutable = 0; \ cs.tag = string_tag; cs.len = length; \ cs.num_cp = length; \ cs.str = s; } @@ -920,6 +926,7 @@ typedef struct { &heap_grown); \ ((string_type *) _s)->hdr.mark = ((gc_thread_data *)data)->gc_alloc_color; \ ((string_type *) _s)->hdr.grayed = 0; \ + ((string_type *) _s)->hdr.immutable = 0; \ ((string_type *) _s)->tag = string_tag; \ ((string_type *) _s)->len = _len; \ ((string_type *) _s)->num_cp = _num_cp; \ @@ -928,6 +935,7 @@ typedef struct { _s = alloca(sizeof(string_type)); \ ((string_type *)_s)->hdr.mark = gc_color_red; \ ((string_type *)_s)->hdr.grayed = 0; \ + ((string_type *)_s)->hdr.immutable = 0; \ ((string_type *)_s)->tag = string_tag; \ ((string_type *)_s)->len = _len; \ ((string_type *)_s)->num_cp = _num_cp; \ @@ -944,6 +952,7 @@ typedef struct { &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)); \ @@ -951,6 +960,7 @@ typedef struct { _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 = _len; \ ((bytevector) _bv)->data = alloca(sizeof(char) * _len); \ @@ -1003,6 +1013,7 @@ typedef struct { port_type p; \ p.hdr.mark = gc_color_red; \ p.hdr.grayed = 0; \ + p.hdr.immutable = 0; \ p.tag = port_tag; \ p.fp = f; \ p.mode = m; \ @@ -1024,6 +1035,7 @@ typedef struct { port_type p; \ p.hdr.mark = gc_color_red; \ p.hdr.grayed = 0; \ + p.hdr.immutable = 0; \ p.tag = port_tag; \ p.fp = f; \ p.mode = 1; \ @@ -1061,6 +1073,7 @@ typedef struct { vector_type v; object arr[4]; } vector_4_type; vector_type v; \ v.hdr.mark = gc_color_red; \ v.hdr.grayed = 0; \ + v.hdr.immutable = 0; \ v.tag = vector_tag; \ v.num_elements = 0; \ v.elements = NULL; @@ -1069,6 +1082,7 @@ typedef struct { vector_type v; object arr[4]; } vector_4_type; vector_type *v = alloca(sizeof(vector_type)); \ v->hdr.mark = gc_color_red; \ v->hdr.grayed = 0; \ + v->hdr.immutable = 0; \ v->tag = vector_tag; \ v->num_elements = 0; \ v->elements = NULL; @@ -1092,6 +1106,7 @@ typedef bytevector_type *bytevector; bytevector_type v; \ v.hdr.mark = gc_color_red; \ v.hdr.grayed = 0; \ + v.hdr.immutable = 0; \ v.tag = bytevector_tag; \ v.len = 0; \ v.data = NULL; @@ -1100,6 +1115,7 @@ typedef bytevector_type *bytevector; bytevector_type *v = alloca(sizeof(bytevector_type)); \ v->hdr.mark = gc_color_red; \ v->hdr.grayed = 0; \ + v->hdr.immutable = 0; \ v->tag = bytevector_tag; \ v->len = 0; \ v->data = NULL; @@ -1128,6 +1144,7 @@ typedef pair_type *pair; pair_type n; \ n.hdr.mark = gc_color_red; \ n.hdr.grayed = 0; \ + n.hdr.immutable = 0; \ n.tag = pair_tag; \ n.pair_car = a; \ n.pair_cdr = d; @@ -1136,6 +1153,7 @@ typedef pair_type *pair; pair_type *n = alloca(sizeof(pair_type)); \ n->hdr.mark = gc_color_red; \ n->hdr.grayed = 0; \ + n->hdr.immutable = 0; \ n->tag = pair_tag; \ n->pair_car = a; \ n->pair_cdr = d; @@ -1143,6 +1161,7 @@ typedef pair_type *pair; #define set_pair(n,a,d) \ n->hdr.mark = gc_color_red; \ n->hdr.grayed = 0; \ + n->hdr.immutable = 0; \ n->tag = pair_tag; \ n->pair_car = a; \ n->pair_cdr = d; @@ -1150,6 +1169,7 @@ typedef pair_type *pair; #define set_pair_as_expr(n,a,d) \ (((pair)(n))->hdr.mark = gc_color_red, \ ((pair)(n))->hdr.grayed = 0, \ + ((pair)(n))->hdr.immutable = 0; \ ((pair)(n))->tag = pair_tag, \ ((pair)(n))->pair_car = a, \ ((pair)(n))->pair_cdr = d, \