mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-04 06:38:47 +00:00
Give begin_error_block its own recursive mutex
This commit is contained in:
+1
-1
@@ -79,7 +79,7 @@ void mutex_lock(RecursiveMutex *m) {
|
|||||||
gb_mutex_lock(&m->mutex);
|
gb_mutex_lock(&m->mutex);
|
||||||
}
|
}
|
||||||
bool mutex_try_lock(RecursiveMutex *m) {
|
bool mutex_try_lock(RecursiveMutex *m) {
|
||||||
return gb_mutex_try_lock(&m->mutex);
|
return !!gb_mutex_try_lock(&m->mutex);
|
||||||
}
|
}
|
||||||
void mutex_unlock(RecursiveMutex *m) {
|
void mutex_unlock(RecursiveMutex *m) {
|
||||||
gb_mutex_unlock(&m->mutex);
|
gb_mutex_unlock(&m->mutex);
|
||||||
|
|||||||
+4
-2
@@ -267,6 +267,7 @@ struct ErrorCollector {
|
|||||||
BlockingMutex mutex;
|
BlockingMutex mutex;
|
||||||
BlockingMutex error_out_mutex;
|
BlockingMutex error_out_mutex;
|
||||||
BlockingMutex string_mutex;
|
BlockingMutex string_mutex;
|
||||||
|
RecursiveMutex block_mutex;
|
||||||
|
|
||||||
Array<u8> error_buffer;
|
Array<u8> error_buffer;
|
||||||
Array<String> errors;
|
Array<String> errors;
|
||||||
@@ -283,6 +284,7 @@ bool any_errors(void) {
|
|||||||
|
|
||||||
void init_global_error_collector(void) {
|
void init_global_error_collector(void) {
|
||||||
mutex_init(&global_error_collector.mutex);
|
mutex_init(&global_error_collector.mutex);
|
||||||
|
mutex_init(&global_error_collector.block_mutex);
|
||||||
mutex_init(&global_error_collector.error_out_mutex);
|
mutex_init(&global_error_collector.error_out_mutex);
|
||||||
mutex_init(&global_error_collector.string_mutex);
|
mutex_init(&global_error_collector.string_mutex);
|
||||||
array_init(&global_error_collector.errors, heap_allocator());
|
array_init(&global_error_collector.errors, heap_allocator());
|
||||||
@@ -357,7 +359,7 @@ AstFile *get_ast_file_from_id(i32 index) {
|
|||||||
|
|
||||||
|
|
||||||
void begin_error_block(void) {
|
void begin_error_block(void) {
|
||||||
mutex_lock(&global_error_collector.mutex);
|
mutex_lock(&global_error_collector.block_mutex);
|
||||||
global_error_collector.in_block = true;
|
global_error_collector.in_block = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -373,7 +375,7 @@ void end_error_block(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
global_error_collector.in_block = false;
|
global_error_collector.in_block = false;
|
||||||
mutex_unlock(&global_error_collector.mutex);
|
mutex_unlock(&global_error_collector.block_mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user