aboutsummaryrefslogtreecommitdiff
path: root/src/tilde.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2023-07-28 14:57:04 +0100
committergingerBill <bill@gingerbill.org>2023-07-28 14:57:04 +0100
commitc39a3603720917d6970026e5c0595d468ea9b372 (patch)
tree47f9b81d6a37007aee82834df91bec311742ec9f /src/tilde.cpp
parentf6d1724835489120ae4a3805495dafc97c86db80 (diff)
Update Tilde for the new TB_Passes approach
Diffstat (limited to 'src/tilde.cpp')
-rw-r--r--src/tilde.cpp44
1 files changed, 25 insertions, 19 deletions
diff --git a/src/tilde.cpp b/src/tilde.cpp
index fc51a1156..0cbc975c4 100644
--- a/src/tilde.cpp
+++ b/src/tilde.cpp
@@ -1,16 +1,16 @@
#include "tilde.hpp"
-gb_global Slice<TB_Arena *> global_tb_arenas;
+gb_global Slice<TB_Arena> global_tb_arenas;
gb_internal TB_Arena *cg_arena(void) {
- return global_tb_arenas[current_thread_index()];
+ return &global_tb_arenas[current_thread_index()];
}
gb_internal void cg_global_arena_init(void) {
- global_tb_arenas = slice_make<TB_Arena *>(permanent_allocator(), global_thread_pool.threads.count);
+ global_tb_arenas = slice_make<TB_Arena>(permanent_allocator(), global_thread_pool.threads.count);
for_array(i, global_tb_arenas) {
- global_tb_arenas[i] = tb_default_arena();
+ tb_arena_create(&global_tb_arenas[i], 2ull<<20);
}
}
@@ -426,14 +426,15 @@ gb_internal cgModule *cg_module_create(Checker *c) {
map_init(&m->values);
map_init(&m->symbols);
-
map_init(&m->file_id_map);
-
map_init(&m->debug_type_map);
map_init(&m->proc_debug_type_map);
map_init(&m->proc_proto_map);
-
map_init(&m->anonymous_proc_lits_map);
+ map_init(&m->equal_procs);
+ map_init(&m->hasher_procs);
+ map_init(&m->map_get_procs);
+ map_init(&m->map_set_procs);
array_init(&m->single_threaded_procedure_queue, heap_allocator());
@@ -456,6 +457,10 @@ gb_internal void cg_module_destroy(cgModule *m) {
map_destroy(&m->proc_debug_type_map);
map_destroy(&m->proc_proto_map);
map_destroy(&m->anonymous_proc_lits_map);
+ map_destroy(&m->equal_procs);
+ map_destroy(&m->hasher_procs);
+ map_destroy(&m->map_get_procs);
+ map_destroy(&m->map_set_procs);
array_free(&m->single_threaded_procedure_queue);
@@ -751,6 +756,19 @@ gb_internal bool cg_generate_code(Checker *c, LinkerData *linker_data) {
array_add(&procedures_to_generate, p);
}
}
+ for (cgProcedure *p : procedures_to_generate) {
+ cg_add_procedure_to_queue(p);
+ }
+
+ if (!m->do_threading) {
+ for (isize i = 0; i < m->single_threaded_procedure_queue.count; i++) {
+ cgProcedure *p = m->single_threaded_procedure_queue[i];
+ cg_procedure_generate(p);
+ }
+ }
+
+ thread_pool_wait();
+
{
cgProcedure *p = cg_startup_runtime_proc;
cg_procedure_begin(p);
@@ -765,18 +783,6 @@ gb_internal bool cg_generate_code(Checker *c, LinkerData *linker_data) {
cg_procedure_end(p);
}
- for (cgProcedure *p : procedures_to_generate) {
- cg_add_procedure_to_queue(p);
- }
-
- if (!m->do_threading) {
- for (isize i = 0; i < m->single_threaded_procedure_queue.count; i++) {
- cgProcedure *p = m->single_threaded_procedure_queue[i];
- cg_procedure_generate(p);
- }
- }
-
- thread_pool_wait();
TB_DebugFormat debug_format = TB_DEBUGFMT_NONE;