aboutsummaryrefslogtreecommitdiff
path: root/src/checker
diff options
context:
space:
mode:
authorGinger Bill <bill@gingerbill.org>2017-01-06 15:47:07 +0000
committerGinger Bill <bill@gingerbill.org>2017-01-06 15:47:07 +0000
commitb1e35b6da3e335376339965ad2e26d7e275de3c5 (patch)
treef9be51b2214a51d2860357fa68e79ff2a1be57f3 /src/checker
parentfc1af0a04bfce7b64e1f776951016ea975e4cd21 (diff)
Fix array pointer as iterators; Remove stack allocations in `startup_runtime`v0.0.5d
Diffstat (limited to 'src/checker')
-rw-r--r--src/checker/checker.c18
-rw-r--r--src/checker/types.c21
2 files changed, 39 insertions, 0 deletions
diff --git a/src/checker/checker.c b/src/checker/checker.c
index 3a19ec69c..cef1a606d 100644
--- a/src/checker/checker.c
+++ b/src/checker/checker.c
@@ -1045,6 +1045,24 @@ void init_preload(Checker *c) {
t_type_info_union = record->fields[15]->type;
t_type_info_raw_union = record->fields[16]->type;
t_type_info_enum = record->fields[17]->type;
+
+ t_type_info_named_ptr = make_type_pointer(heap_allocator(), t_type_info_named);
+ t_type_info_integer_ptr = make_type_pointer(heap_allocator(), t_type_info_integer);
+ t_type_info_float_ptr = make_type_pointer(heap_allocator(), t_type_info_float);
+ t_type_info_any_ptr = make_type_pointer(heap_allocator(), t_type_info_any);
+ t_type_info_string_ptr = make_type_pointer(heap_allocator(), t_type_info_string);
+ t_type_info_boolean_ptr = make_type_pointer(heap_allocator(), t_type_info_boolean);
+ t_type_info_pointer_ptr = make_type_pointer(heap_allocator(), t_type_info_pointer);
+ t_type_info_maybe_ptr = make_type_pointer(heap_allocator(), t_type_info_maybe);
+ t_type_info_procedure_ptr = make_type_pointer(heap_allocator(), t_type_info_procedure);
+ t_type_info_array_ptr = make_type_pointer(heap_allocator(), t_type_info_array);
+ t_type_info_slice_ptr = make_type_pointer(heap_allocator(), t_type_info_slice);
+ t_type_info_vector_ptr = make_type_pointer(heap_allocator(), t_type_info_vector);
+ t_type_info_tuple_ptr = make_type_pointer(heap_allocator(), t_type_info_tuple);
+ t_type_info_struct_ptr = make_type_pointer(heap_allocator(), t_type_info_struct);
+ t_type_info_union_ptr = make_type_pointer(heap_allocator(), t_type_info_union);
+ t_type_info_raw_union_ptr = make_type_pointer(heap_allocator(), t_type_info_raw_union);
+ t_type_info_enum_ptr = make_type_pointer(heap_allocator(), t_type_info_enum);
}
if (t_allocator == NULL) {
diff --git a/src/checker/types.c b/src/checker/types.c
index 74c2fa981..779924cd4 100644
--- a/src/checker/types.c
+++ b/src/checker/types.c
@@ -277,6 +277,27 @@ gb_global Type *t_type_info_union = NULL;
gb_global Type *t_type_info_raw_union = NULL;
gb_global Type *t_type_info_enum = NULL;
+
+gb_global Type *t_type_info_named_ptr = NULL;
+gb_global Type *t_type_info_integer_ptr = NULL;
+gb_global Type *t_type_info_float_ptr = NULL;
+gb_global Type *t_type_info_any_ptr = NULL;
+gb_global Type *t_type_info_string_ptr = NULL;
+gb_global Type *t_type_info_boolean_ptr = NULL;
+gb_global Type *t_type_info_pointer_ptr = NULL;
+gb_global Type *t_type_info_maybe_ptr = NULL;
+gb_global Type *t_type_info_procedure_ptr = NULL;
+gb_global Type *t_type_info_array_ptr = NULL;
+gb_global Type *t_type_info_slice_ptr = NULL;
+gb_global Type *t_type_info_vector_ptr = NULL;
+gb_global Type *t_type_info_tuple_ptr = NULL;
+gb_global Type *t_type_info_struct_ptr = NULL;
+gb_global Type *t_type_info_union_ptr = NULL;
+gb_global Type *t_type_info_raw_union_ptr = NULL;
+gb_global Type *t_type_info_enum_ptr = NULL;
+
+
+
gb_global Type *t_allocator = NULL;
gb_global Type *t_allocator_ptr = NULL;
gb_global Type *t_context = NULL;