diff options
Diffstat (limited to 'src/tokenizer.cpp')
| -rw-r--r-- | src/tokenizer.cpp | 60 |
1 files changed, 29 insertions, 31 deletions
diff --git a/src/tokenizer.cpp b/src/tokenizer.cpp index edffb7446..9a0a1c17c 100644 --- a/src/tokenizer.cpp +++ b/src/tokenizer.cpp @@ -264,8 +264,9 @@ struct ErrorCollector { i64 count; i64 warning_count; bool in_block; - gbMutex mutex; - gbMutex string_mutex; + BlockingMutex mutex; + BlockingMutex error_out_mutex; + BlockingMutex string_mutex; Array<u8> error_buffer; Array<String> errors; @@ -281,8 +282,9 @@ bool any_errors(void) { } void init_global_error_collector(void) { - gb_mutex_init(&global_error_collector.mutex); - gb_mutex_init(&global_error_collector.string_mutex); + mutex_init(&global_error_collector.mutex); + mutex_init(&global_error_collector.error_out_mutex); + mutex_init(&global_error_collector.string_mutex); array_init(&global_error_collector.errors, heap_allocator()); array_init(&global_error_collector.error_buffer, heap_allocator()); array_init(&global_file_path_strings, heap_allocator(), 4096); @@ -293,7 +295,7 @@ void init_global_error_collector(void) { bool set_file_path_string(i32 index, String const &path) { bool ok = false; GB_ASSERT(index >= 0); - gb_mutex_lock(&global_error_collector.string_mutex); + mutex_lock(&global_error_collector.string_mutex); if (index >= global_file_path_strings.count) { array_resize(&global_file_path_strings, index); @@ -304,14 +306,14 @@ bool set_file_path_string(i32 index, String const &path) { ok = true; } - gb_mutex_unlock(&global_error_collector.string_mutex); + mutex_unlock(&global_error_collector.string_mutex); return ok; } bool set_ast_file_from_id(i32 index, AstFile *file) { bool ok = false; GB_ASSERT(index >= 0); - gb_mutex_lock(&global_error_collector.string_mutex); + mutex_lock(&global_error_collector.string_mutex); if (index >= global_files.count) { array_resize(&global_files, index); @@ -322,39 +324,40 @@ bool set_ast_file_from_id(i32 index, AstFile *file) { ok = true; } - gb_mutex_unlock(&global_error_collector.string_mutex); + mutex_unlock(&global_error_collector.string_mutex); return ok; } String get_file_path_string(i32 index) { GB_ASSERT(index >= 0); - gb_mutex_lock(&global_error_collector.string_mutex); + mutex_lock(&global_error_collector.string_mutex); String path = {}; if (index < global_file_path_strings.count) { path = global_file_path_strings[index]; } - gb_mutex_unlock(&global_error_collector.string_mutex); + mutex_unlock(&global_error_collector.string_mutex); return path; } AstFile *get_ast_file_from_id(i32 index) { GB_ASSERT(index >= 0); - gb_mutex_lock(&global_error_collector.string_mutex); + mutex_lock(&global_error_collector.string_mutex); AstFile *file = nullptr; if (index < global_files.count) { file = global_files[index]; } - gb_mutex_unlock(&global_error_collector.string_mutex); + mutex_unlock(&global_error_collector.string_mutex); return file; } + void begin_error_block(void) { - gb_mutex_lock(&global_error_collector.mutex); + mutex_lock(&global_error_collector.mutex); global_error_collector.in_block = true; } @@ -367,13 +370,10 @@ void end_error_block(void) { String s = {text, n}; array_add(&global_error_collector.errors, s); global_error_collector.error_buffer.count = 0; - - // gbFile *f = gb_file_get_standard(gbFileStandard_Error); - // gb_file_write(f, text, n); } global_error_collector.in_block = false; - gb_mutex_unlock(&global_error_collector.mutex); + mutex_unlock(&global_error_collector.mutex); } @@ -393,14 +393,14 @@ ERROR_OUT_PROC(default_error_out_va) { gb_memmove(data, buf, n); global_error_collector.error_buffer.count += n; } else { - gb_mutex_lock(&global_error_collector.mutex); + mutex_lock(&global_error_collector.error_out_mutex); { u8 *text = gb_alloc_array(heap_allocator(), u8, n+1); gb_memmove(text, buf, n); text[n] = 0; array_add(&global_error_collector.errors, make_string(text, n)); } - gb_mutex_unlock(&global_error_collector.mutex); + mutex_unlock(&global_error_collector.error_out_mutex); } gb_file_write(f, buf, n); @@ -491,7 +491,7 @@ bool show_error_on_line(TokenPos const &pos, TokenPos end) { } void error_va(TokenPos const &pos, TokenPos end, char const *fmt, va_list va) { - gb_mutex_lock(&global_error_collector.mutex); + mutex_lock(&global_error_collector.mutex); global_error_collector.count++; // NOTE(bill): Duplicate error, skip it if (pos.line == 0) { @@ -503,7 +503,7 @@ void error_va(TokenPos const &pos, TokenPos end, char const *fmt, va_list va) { gb_bprintf_va(fmt, va)); show_error_on_line(pos, end); } - gb_mutex_unlock(&global_error_collector.mutex); + mutex_unlock(&global_error_collector.mutex); if (global_error_collector.count > MAX_ERROR_COLLECTOR_COUNT) { gb_exit(1); } @@ -514,7 +514,7 @@ void warning_va(TokenPos const &pos, TokenPos end, char const *fmt, va_list va) error_va(pos, end, fmt, va); return; } - gb_mutex_lock(&global_error_collector.mutex); + mutex_lock(&global_error_collector.mutex); global_error_collector.warning_count++; if (!global_ignore_warnings()) { // NOTE(bill): Duplicate error, skip it @@ -528,18 +528,16 @@ void warning_va(TokenPos const &pos, TokenPos end, char const *fmt, va_list va) show_error_on_line(pos, end); } } - gb_mutex_unlock(&global_error_collector.mutex); + mutex_unlock(&global_error_collector.mutex); } void error_line_va(char const *fmt, va_list va) { - gb_mutex_lock(&global_error_collector.mutex); error_out_va(fmt, va); - gb_mutex_unlock(&global_error_collector.mutex); } void error_no_newline_va(TokenPos const &pos, char const *fmt, va_list va) { - gb_mutex_lock(&global_error_collector.mutex); + mutex_lock(&global_error_collector.mutex); global_error_collector.count++; // NOTE(bill): Duplicate error, skip it if (pos.line == 0) { @@ -550,7 +548,7 @@ void error_no_newline_va(TokenPos const &pos, char const *fmt, va_list va) { token_pos_to_string(pos), gb_bprintf_va(fmt, va)); } - gb_mutex_unlock(&global_error_collector.mutex); + mutex_unlock(&global_error_collector.mutex); if (global_error_collector.count > MAX_ERROR_COLLECTOR_COUNT) { gb_exit(1); } @@ -558,7 +556,7 @@ void error_no_newline_va(TokenPos const &pos, char const *fmt, va_list va) { void syntax_error_va(TokenPos const &pos, TokenPos end, char const *fmt, va_list va) { - gb_mutex_lock(&global_error_collector.mutex); + mutex_lock(&global_error_collector.mutex); global_error_collector.count++; // NOTE(bill): Duplicate error, skip it if (global_error_collector.prev != pos) { @@ -571,7 +569,7 @@ void syntax_error_va(TokenPos const &pos, TokenPos end, char const *fmt, va_list error_out("Syntax Error: %s\n", gb_bprintf_va(fmt, va)); } - gb_mutex_unlock(&global_error_collector.mutex); + mutex_unlock(&global_error_collector.mutex); if (global_error_collector.count > MAX_ERROR_COLLECTOR_COUNT) { gb_exit(1); } @@ -582,7 +580,7 @@ void syntax_warning_va(TokenPos const &pos, TokenPos end, char const *fmt, va_li syntax_error_va(pos, end, fmt, va); return; } - gb_mutex_lock(&global_error_collector.mutex); + mutex_lock(&global_error_collector.mutex); global_error_collector.warning_count++; if (!global_ignore_warnings()) { // NOTE(bill): Duplicate error, skip it @@ -596,7 +594,7 @@ void syntax_warning_va(TokenPos const &pos, TokenPos end, char const *fmt, va_li error_out("Warning: %s\n", gb_bprintf_va(fmt, va)); } } - gb_mutex_unlock(&global_error_collector.mutex); + mutex_unlock(&global_error_collector.mutex); } |